BCB访问WebServers接口
1. 打开编译器 File->new->Others->
2.
3. 选择WebServers选项
4. 双击 WSDL Importer选项
5.
6. 输入链接这里输入腾讯QQ状态查询链接http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
7.
8. Next->Finish
9. 自动生成"qqOnlineWebService.h"和"qqOnlineWebService.cpp"文件
10.HTTPRIO* rio = new THTTPRIO(0);的后面,加上以下两句话:
rio->HTTPWebNode->UseUTF8InHeader = true;
rio->Converter->Options<<soUTF8InHeader;
//
11.static voidRegTypes(){这个函数的最后,我们需要加上下面一段话}
InvRegistry()->RegisterInvokeOptions(__interfaceTypeinfo(qqOnlineWebServiceSoap),ioDocument);
二、添加THTTPRIO控件
这个控件的作用是
THTTPRIOuses HTTP messages to call remote interfaced objects using SOAP.
UseTHTTPRIO to generate statically-linked calls to invokable interfaces on aremote Web Service application.
里面有几个属性设置下
从下面一个属性开始
1,WSDLLocation,下拉菜单选中
2,Service,下拉菜单选中
3,Port,下拉菜单选中,这里有2个选项,一个是ABCDWebServiceSoap和ABCDWebServiceSoap12,我们选中第一个。(因为BCB6.0还不能很好支持WebServiceSoap12)
4.调整THTTPRIO控件的字符集调整
这个控件的属性有两处关于utf8的bool值,请都改成true就可以了。(那2处都很好找,属性名就有utf8字眼)
三、添加引用
1,添加头文件
在窗体Form1.h文件里
添加qqOnlineWebService.h的头文件。
#include <Rio.hpp>
#include <SOAPHTTPClient.hpp>
#include "qqOnlineWebService.h"
四、调用如下:在单击事件中实现:
NS_qqOnlineWebService::_di_qqOnlineWebServiceSoapp =NS_qqOnlineWebService::GetqqOnlineWebServiceSoap(true,"http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl");
if(!p)
htpr1->QueryInterface(p);
if(p)
{
str = p->qqCheckOnline("8698053");//8698053
ShowMessage(str);
}
最后,如出现“Access Violation at address”错误,则用一下方法:
右键“我的电脑”。点击“属性”。
高级-》性能-》设置。
在“性能选项”中单击“数据执行保护”。
单击“添加”,选择要运行的程序。
OK。