美文网首页
C++ gSOAP Webservice Client

C++ gSOAP Webservice Client

作者: gentel_liao | 来源:发表于2018-06-08 19:37 被阅读0次

    gSOAP C++ Webservice 客户端实现

    gSOAP下载

    gSOAP下载
    目前最新版本为:gsoap_2.8.66

    gSOAP生成c++客户端代码文件

    解压gsoap_2.8.66,在gsoap-2.8\gsoap\bin\win32下创建文件mytypemap.dat
    (解决中文乱码需要创建文件mytypemap.dat同时添加内容:xsd__string = | std::wstring | wchar_t*)

    gsoap-2.8\gsoap\bin\win32路径下控制台执行以下命令

    wsdl2h -o Parkinginfo.h -t mytypemap.dat http://XXX.XXX.XXX.XXX:XXX/??????/services/????wsdl
    
    soapcpp2 -c Parkinginfo.h
    

    创建工程

    VS2010创建win32控制台工程,不选预编译
    拷贝ParkingHttpBinding.nsmap/soapClient.cpp/soapC.cpp/soapStub.h/soapH.h共4个文件到工程路径下
    同时拷贝gsoap-2.8\gsoap路径下stdsoap2.cpp/stdsoap2.h文件到工程路径下
    以下是工程代码

    #include "stdafx.h"
    #include <iomanip>
    
    #include "soapH.h" // include all interfaces (library and generated) 
    #include "ParkingHttpBinding.nsmap" // import the generated namespace mapping table 
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        _ns1__Parkinginfo parkinginfo;//入参
        _ns1__ParkinginfoResponse parkinginfoResponse;//出参
    
        #if 0  //上报实时车位信息
        parkinginfo.xtlb = _T("01");
        parkinginfo.jkxlh = _T("XXXX");
        parkinginfo.XmlString = _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?><xml><head><bh>XXXX</bh><mc>XXXX</mc><scsj>2018-05-24 14:08:48</scsj><version>1.0</version></head><data><jccsjid>123456789</jccsjid><hphm>粤A11120</hphm><hpzl>02</hpzl><fs>1</fs><crkbh>01</crkbh><csys>A</csys><tp></tp><tztp></tztp><tgsj>2018-05-24 14:08:48</tgsj><sjzt>01</sjzt><id></id></data></xml>");
        #else    //定时刷新停车场数据
        parkinginfo.xtlb = _T("02");
        parkinginfo.jkxlh = _T("XXXX");
        parkinginfo.XmlString = _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?><xml><head><bh>XXXX</bh><mc>XXXX</mc><cwzs>200</cwzs><scsj>2018-05-24 14:08:48</scsj><version>1.0</version></head><data><ztsjid>123456789</ztsjid><tcczt>01</tcczt><scsj>2018-05-24 14:08:48</scsj><sycws>100</sycws><gdcws>50</gdcws><sygdcws>30</sygdcws><lscws>150</lscws><sylscws>70</sylscws></data></xml>");
        #endif
    
        struct soap soap;
        soap_init(&soap);
        soap_set_mode(&soap, SOAP_C_UTFSTRING);
        setlocale(LC_ALL, "");
        if (soap_call___ns1__Parkinginfo(&soap, NULL, NULL, &parkinginfo, parkinginfoResponse) == SOAP_OK) 
            printf_s("soap = %S", parkinginfoResponse.out);
        else // an error occurred 
            soap_print_fault(&soap, stderr); // display the SOAP fault message on the stderr stream 
    
        soap_destroy(&soap); // delete deserialized class instances (for C++) 
        soap_end(&soap); // remove deserialized data and clean up 
        soap_done(&soap); // detach the gSOAP context 
        
        getchar();
        
        return 0; 
    }
    

    需要注意的是:如果使用IP:PORT形式的URL地址需要确定soapClient.cpp中soap_endpoint = "http://xxx.xxx.xxx.xxx:port/????/services/????"中的端口是不是存在。

    相关文章

      网友评论

          本文标题:C++ gSOAP Webservice Client

          本文链接:https://www.haomeiwen.com/subject/tnzasftx.html