WTL 学习六 gsoap 调用webservice的过程

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


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

  

内容是

    strError = string.Empty;
        string strSessionXml = "测试";      
        return strSessionXml;



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

生成 参数 及提示如下



  • 用soapcpp2.exe生成 代理类




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



  • 在WTL的项目里新建一个 Gsoap 筛选器,添加几个文件




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



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




  • MainDlg.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,	0,   (LPCSTR)end.FileGetSessionResult,   -1,   pUnicode, iLen);  //转换一下
	MessageBox((LPCTSTR)pUnicode,_T(""));  //pUnicode 显示的正常


你可能感兴趣的:(WTL)