日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法

發布時間:2025/4/16 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大體思路是:使用gsoap生成文件,把生成的相關文件均加載到項目中調用

本文以調用天氣的webservice為例子,手把手教你。

步驟一

準備gSOAP工具:將gsoap_2.8.100.zip解壓,進入gsoap_2.8.100gsoap-2.8gsoapbinwin32目錄下,或win64目錄下。(工具可以在這個網址下載:https://sourceforge.net/projects/gsoap2/files/gsoap-2.8/)

圖1. 解壓后要進入的目錄

步驟二

準備要調用的webservice接口的wsdl地址,比如網上的查詢天氣接口:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

打開鏈接是這個樣子:

圖2. xml文件

右擊這網頁,選擇“另存為”到win32目錄下,直接把文件名后綴改成.wsdl,如下:

圖3. 另存為文件后的目錄

步驟三

在win32目錄下新建一個文件”wsmp.dat“,文件內容為xsd__string = | std::wstring | wchar_t*

圖4. wsmap.dat

那么SOAP/XML中的string將轉換成std::wstrin或wchar_t*,這樣能更好地支持中文。

步驟四

在該目錄下打開cmd窗口,輸入以下命令。回車后WeatherWS.h頭文件

wsdl2h -s -t wsmap.dat WeatherWS.wsdl

  • -o 文件名,指定輸出頭文件
  • -n 名空間前綴 代替默認的ns
  • -c 產生純C代碼,否則是C++代碼
  • -s 不要使用STL代碼
  • -t 文件名,指定type map文件,默認為typemap.dat
  • -e 禁止為enum成員加上名空間前綴

步驟五

解析WeatherWS.h,生成存根程序

在該目錄下打開cmd窗口,輸入以下命令。

soapcpp2 -i -C -x -L WeatherWS.h -I D:gsoap_2.8.108gsoap-2.8gsoapimport

注意D:gsoap_2.8.108gsoap-2.8gsoapimport是我的路徑,根據你的路徑來變。

此時會生成6個文件,如下圖:

  • -C 僅生成客戶端代碼
  • -S 僅生成服務器端代碼
  • -L 不要產生soapClientLib.c和soapServerLib.c文件
  • -c 產生純C代碼,否則是C++代碼(與頭文件有關)
  • -I 指定import路徑(此項是必要的,因前面為指定-s)
  • -x 不要產生XML示例文件
  • -i生成C++包裝,客戶端為xxxxProxy.h(.cpp),服務器端為xxxxService.h(.cpp)。

步驟六

打開Visual Studio 2017,在里面新建一個空項目。我在這里命名為“TestWebservice”。

將文件復制到vs的項目目錄下,選擇“添加現有項”,添加好的樣子如下:

其中的stdsoap2.h和stdsoap2.cpp在gsoap_2.8.100gsoap-2.8gsoap目錄下

在“源文件”目錄下,右擊新建一個.cpp文件添加main函數。空項目默認啥都沒有。

#include <stdio.h> #include <stdlib.h> #include <fstream> #include < string > #include <iostream>#include <iostream> //包含soap頭文件 #include "soapH.h" #include "soapStub.h" #include "WeatherWSSoap.nsmap" #include "soapWeatherWSSoapProxy.h"using namespace std;void main(int argc, char **argv) {//WebService的請求地址const char* web_url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx";//soap接口WeatherWSSoapProxy soap(SOAP_C_UTFSTRING);//構造輸入參數_ns1__getWeather city_name;city_name.theCityCode = L"";city_name.theUserID = L"";//輸出參數_ns1__getWeatherResponse weather_res;//調用接口方法getWeather int xlt = soap.getWeather(web_url, NULL, &city_name, weather_res);//判斷接口返回值, SOAPOK表示成功if (xlt == SOAP_OK){// 獲取返回結果ns1__ArrayOfString* aos = weather_res.getWeatherResult;// 打印返回結果int count = aos->__sizestring;for (int i = 0; i < count; i++){std::wstring a = (aos->string)[i];wcout.imbue(locale("chs"));wcout << a.c_str() << endl;}}getchar(); }

錯誤修改

會有紅色下劃線錯誤提示

錯誤提示

右擊項目“屬性”->c/c++->語言->符合模式,改成否。如下圖:

最后的結果

最后輸出

原創不易,歡迎評論,并點贊!!

Enjoy!!!

總結

以上是生活随笔為你收集整理的cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。