c++ builder 编写web services容易遇到的小问题
2010-02-23 14:56
260 查看
由于项目需要,要编写webservices应用,网上这方面的资料不是太多。现把我写程序时候遇到的问题粗略记录如下:
第一步,在已有项目中引入webservices:
在C++ builder 菜单中选择 File-》New-》Other-》打开New Items
选中WebServices页中的 WSDL Importer,打开WSDL Import Wizard,在下面的URL中输入服务的地址(如:
http://127.0.0.1/Service.asmx?wsdl)。注意后面加上的"?wsdl”。这样就生成了Service.cpp 和 Service.h
两个文件。
第二步,在项目中使用服务:
首先包含头文件,#include "Service.h"。 声明变量, _di_ServiceSoap WebService ;使用相应的服务。这时会
遇到问题,就是给服务传参数,服务接收不到。经过查找资料,最终在台湾的一个网站中找到解决办法。
第三步,编辑生成的Service.cpp:
生成的文件中最后有一段如下代码:
static void RegTypes()
{
/* ServiceSoap */
InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
}
在后面添加一行,改成这样:
static void RegTypes()
{
/* ServiceSoap */
InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
InvRegistry()->RegisterInvokeOptions(__interfaceTypeinfo(ServiceSoap), ioDocument);
}
至此,服务和应用已经可以正常的接收和返回“英文,数字”。但是,如果是中文就会出现乱码,不能正常处理。接着查阅资料,都
说是字符编码问题,改变默认的字符编码可以解决,经过试验,都没有解决。经过测试,找到一个解决办法,但不一定是最好的方法。
就是把所有的中文参数或是返回值,重新编码,应用或服务接收到后,再解码。
第一步,在已有项目中引入webservices:
在C++ builder 菜单中选择 File-》New-》Other-》打开New Items
选中WebServices页中的 WSDL Importer,打开WSDL Import Wizard,在下面的URL中输入服务的地址(如:
http://127.0.0.1/Service.asmx?wsdl)。注意后面加上的"?wsdl”。这样就生成了Service.cpp 和 Service.h
两个文件。
第二步,在项目中使用服务:
首先包含头文件,#include "Service.h"。 声明变量, _di_ServiceSoap WebService ;使用相应的服务。这时会
遇到问题,就是给服务传参数,服务接收不到。经过查找资料,最终在台湾的一个网站中找到解决办法。
第三步,编辑生成的Service.cpp:
生成的文件中最后有一段如下代码:
static void RegTypes()
{
/* ServiceSoap */
InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
}
在后面添加一行,改成这样:
static void RegTypes()
{
/* ServiceSoap */
InvRegistry()->RegisterInterface(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/", L"utf-8");
InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(ServiceSoap), L"http://tempuri.org/%operationName%");
InvRegistry()->RegisterInvokeOptions(__interfaceTypeinfo(ServiceSoap), ioDocument);
}
至此,服务和应用已经可以正常的接收和返回“英文,数字”。但是,如果是中文就会出现乱码,不能正常处理。接着查阅资料,都
说是字符编码问题,改变默认的字符编码可以解决,经过试验,都没有解决。经过测试,找到一个解决办法,但不一定是最好的方法。
就是把所有的中文参数或是返回值,重新编码,应用或服务接收到后,再解码。
相关文章推荐
- c++ builder 编写web services容易遇到的小问题
- 2014.10.7编写Android代码遇到的问题
- 编写Makefile文件中遇到的一个问题
- 编写shell脚本遇到的问题
- [转]dev C++编写windows程序遇到问题
- Java编写山寨QQ中遇到的各种问题---登陆界面
- 使用VisualGDB在windows上编写linux程序(centos)遇到的问题
- 用hibernate编写程序遇到的问题及解决方法
- webpack+react+antd项目编写过程中遇到的问题
- 用Visual Studio 2015 编写第一个UMDF驱动遇到的问题!!
- STM32IAP升级-----编写IAP升级遇到的问题总结
- android 在使用studio 编写百度地图中遇到APP Scode码校验失败 问题
- [JAVA加解密]仿照DH算法编写ECDH算法时遇到的一些问题
- 编写代码期间遇到的问题
- 使用netty4.x 编写UDP服务器遇到的狗血问题
- 编写windows服务遇到的问题
- java编写程序遇到的各种乱码问题记录
- 在编写PHP时遇到的一些小问题
- 集成ZBar时容易遇到的问题以及解决方法
- 编写Makefile中遇到的各种奇葩问题汇总