微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WTL 学习六 gsoap 调用webservice的过程

       本文回顾了用WTL调用Webservice的过程,gsoap 版本为 gsoap_2.8.3


  • 新建一个webservice,返回一个简单的unicode字符串.

  

内容

    strError = string.Empty;
        string strSessionXml = "<?xml version=\"1.0\" encoding=\"gb2312\"?><root><sessionid>测试</sessionid></root>";      
        return strSessionXml;



  • 用 wsdl2h.exe 将 http://localhost:2000/FileWebService.asmx?wsdl  生成 temp.h

生成 参数 及提示如下



  • 用soapcpp2.exe生成 代理类




  • 完成后,生成了几个文件,带12的不知道是啥意思,还没有来的及研究






  • 其中 stdsoap2.h   stdsoap2.cpp 在gsoap 的目录里找



  • 并且需要将几个cpp文件进行一下设置,选中,右击,属性






#include "FileWebServiceSoap.nsmap"
#include "soapFileWebServiceSoapProxy.h" 


在某个按钮的单击事件里添加代码注意一些设置,否则容易有乱码


	FileWebServiceSoapProxy webservice("http://localhost:2000/FileWebService.asmx");	    // 定义Webservice地址
	webservice.FileWebServiceSoapProxy_init(SOAP_C_UTFSTRING,SOAP_C_UTFSTRING); // 设置传入参数,传出参数的编码方式

	_ns1__FileGetSession begin;    // 调用方法前的设置
	begin.soap = webservice.soap;   //必须
	begin.strXml = "";  //传入的参数

	_ns1__FileGetSessionResponse  end; //  webservice返回
	end.soap = webservice.soap;
	//end.FileGetSessionResult = "";
	//end.strError =""; 	 
	webservice.FileGetSession(&begin,&end);	 //调用方法  
    int   iLen   =   strlen(end.FileGetSessionResult);     //如果包含中文,这里为乱码
    wchar_t   *pUnicode   =   new   wchar_t[iLen];   
	MultiBytetoWideChar(CP_UTF8,(LPCSTR)end.FileGetSessionResult,-1,pUnicode,iLen);  //转换一下
	MessageBox((LPCTSTR)pUnicode,_T(""));  //pUnicode 显示的正常

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐