#include "WebService.h"
using namespace Debug; // 这个命名空间是自动生成的,与Web服务的实现有关
以下是调用代码
void CInvokeDemoDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
// 因为生成的代码是基于ATL的,所以要初始化COM
CoInitialize(NULL);
HRESULT hr = S_OK;
CComBSTR hiResult;
CComBSTR username = "vckBase";
CDebug* debug = new CDebug; // 代理对象
// 可以调用SetUrl动态设置Web服务地址
// debug->SetUrl("http://blog.eray.cn/debug.asmx");
hr = debug->Hi(username,&hiResult); //注意,返回值是以指针形式反回的
if(FAILED(hr))
{
MessageBox("调用失败");
}
else
{
CString str(hiResult);
MessageBox(str,"调用结果");
}
delete debug;
CoUninitialize();
}
由于生成的代理类是基于ATL的,所以在调用前要初始化COM调用。在上述的代码中就使用了CComBSTR而没有直接使用BSTR,因为CComBSTR属于智能类型,可以自己管理内存分配,比较方便。
上述代码中有一行被注释的代码调用了SetUrl来设置WebService的调用地址。在实际的项目中,可以将这个地址写在配置文件中。 逆风者
5、运行结果
来,看一下吧~
五、结束语
通过以上示例可以看出,其实在VS.NET中实现非托管的C 调用WebService是相当简单的。当然,在实际的使用过程中,为了程序的徤壮,还需要更多的代码逻辑,比如错误处理等等。
本文章更多内容:<<上一页 - 1 - 2 |