免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
gSoap使用入門(1)----由wsdl文件生成頭文件

開始前先看一下用戶向導吧 http://www.cs.fsu.edu/~engelen/soap.html 中左側點擊Documentation

英語水平確實有限,有些內容可能說的不準確,敬請參考向導中原文,以免誤導

向導 1.1節(jié)中提供了gSoap開發(fā)包的下載地址http://sourceforge.net/projects/gsoap2

下載最新gSoap程序包
解壓后在\gsoap\bin\win32(windowsXP下,其它操作系統(tǒng)就自己選擇)下找到 編譯器soapcpp2.exe 和wsdl解析工具 wsdl2h.exe,這兩個文件也可以重新編譯生成,用戶向導中有介紹,此處就不多說,用現成的了。

進入主題:開發(fā)客戶端程序
(1)客戶端服務端通信必不可少的一個東西:接口定義。
gSoap使用中,需要此接口文件(也就是以后常提到的頭文件)此文件可以兩種方式得到:
1: 由現有的wsdl文件轉換得到(本文使用這種方式)
2: 自己編寫

(2)兩個工具的用途
wsdl2h.exe--------名字就能看出來,完成 wsdl文件(.wsdl)到(2)頭文件(.h)的轉換,即由寫好的wsdl格式的接口定義文件轉換為C/C++格式的頭文件

soapcpp2.exe------根據接口頭文件生成應用程序客戶端和服務端的框架文件(soapClient.cpp、soapServer.cpp等).

結合例子說明過程
示例:引用向導中的例子--計算器
由wsdl文件生成接口頭文件
wsdl文件URL地址:http://www.cs.fsu.edu/~engelen/calc.wsdl
操作流程
a) 程序->運行 輸入cmd 啟動命令行;
b) 打開wsdl2h.exe所在文件路徑(不打開的話下面輸入時要記著輸入全路徑,不然找不著了);
c) 輸入:wsdl2h.exe -o cal.h

       "-o"是生成選項,表示輸出,也可以增加其它選項(向導中出現 "-s -o"、"-c -o"等),具體選項說明請參照向導中介紹。
"
注意:以上四項中每項間都有空格分開 不要手誤?。?br>d) 回車 運行吧,看提示信息,沒有提示故障的話,查找cal.h吧(cal.h的保存路徑要記好啊,自己設置的);
e) 得到cal.h后,打開可以看到接口定義;
f) 在命令行中 輸入:soapcpp2.exe cal.h
其中
"soapcpp2.exe",此處把soapcpp2.exe和wsdl2h.exe放在同一目錄下了,且前面已打開此路徑;
"cal.h"即由wsdl生成的頭文件,此文件保存位置與soapcpp2.exe相同,故此處可這樣輸入,若不同還須設置文件路徑;
同樣兩項之間也有空格!
可以增加控制選項如"soapcpp2.exe -C cal.h"則只生成客戶端所需文件, "soapcpp2.exe -S calc.h"則只生成服務端所需文件
g) 回車 運行。
如果提示找不到文件 stlvector.h,因為cal.h文件中引用了文件stlvector.h;解決方法:開發(fā)包\gsoap\import目下有此文件,復制一份到cal.h所在目錄。
注意:此過程中要檢查生成的編譯信息,確保沒有警告信息出現(警告信息可能是gSoap不支持的內容,如果不去除,程序運行故障很難找到根本原因),另不能只看編譯結果成功就認為是正確的,存在警告信息也顯示為編譯成功!!
h) 編譯成功,生成的框架文件保存位置與cal.h在同一目錄下,包括:calc.nsmap、soapC.cpp、soapcalcObject.h、soapcalcProxy.h、soapClient.cpp、soapClient.lib

、soapH.h、soapServer.cpp、soapServer.Lib、soapStub.h和接口的請求應答xml文件。
    其中
      calc.nsmap 為命名空間定義文件;
      soapClient.cpp 客戶端文件
soapServer.cpp 服務端文件
soapcalcProxy.h 代理用到
soapStub.h 此文件中為程序中要用到的接口的聲明(將cal.h中的接口經過處理后,在程序中供調用的接口)
xml文件 為接口的xml格式,可以據此幫助調試等。。。
其它文件作用還沒完全搞明白,向導中有說明,此處不說了以免誤導^_^
i) 編譯過程完成。下面開始程序(客戶端)
VC6中新建空的win32控制臺工程,新建源文件calcClient.cpp;
復制編譯生成的文件(包括cal.h和stlvector)到程序目錄中;
在工程中添加文件calc.nsmap、soapC.cpp、soapClient.cpp、soapH.h、soapStub.h(使用代理添加soapcalcProxy.h);
編譯,提示無法找到文件stdsoap2.h、stdsoap2.cpp文件,這兩個文件為gSoap的源碼文件,在\gsoap文件夾中找到這兩個文件,復制到程序目錄下并添加到工程中;
在calcClient.cpp文件中 添加語句#include "soapH.h", #include "calc.nsmap"

///////////////////////////calcClient.cpp源碼//
#include <stdio.h>
#include "soapH.h"
#include "calc.nsmap"

const char server[] = "

int main(int argc, char **argv)
{
struct soap soap;
double a, b, result;
if (argc < 4)
{ fprintf(stderr, "Usage: [add|sub|mul|div|pow] num num\n");
exit(0);
}
soap_init(&soap);
a = strtod(argv[2], NULL);
b = strtod(argv[3], NULL);
switch (*argv[1])
{ case 'a':
soap_call_ns2__add(&soap, server, "", a, b, result);
break;
case 's':
soap_call_ns2__sub(&soap, server, "", a, b, result);
break;
case 'm':
soap_call_ns2__mul(&soap, server, "", a, b, result);
break;
case 'd':
soap_call_ns2__div(&soap, server, "", a, b, result);
break;
case 'p':
soap_call_ns2__pow(&soap, server, "", a, b, result);
break;
default:
fprintf(stderr, "Unknown command\n");
exit(0);
}
if (soap.error)
{ soap_print_fault(&soap, stderr);
exit(1);
}
else
printf("result = %g\n", result);
soap_destroy(&soap);
soap_end(&soap);
soap_done(&soap);
return 0;
}
//////////////////////calcClient.cpp源碼////////////////////////////////////
其中soap_call_ns2__add、soap_call_ns2__sub、soap_call_ns2__mul、soap_call_ns2__div、soap_call_ns2__pow為接口函數,在soapStub.h中可以找到函數聲明。
^_^搞定一步^_^
calcClient.cpp內容引用了gSoap開發(fā)包中例程中calc的源碼,函數名略有修改動!代碼中沒有做接口執(zhí)行故障檢測,僅供參考。
這個例子中還有很多東西沒寫明白,比如gSoap中接口函數的定義的原則、gSoap的初始化和結束清理等。

打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
CentOS6.5下編繹gSoap相關問題及解決
用gSOAP調用Web Services
gsoap使用小結
[8,9]wsdl2h,soapcpp2 工具的使用
gSOAP搭建ONVIF(C++)客戶端開發(fā)框架--windows&ubuntu
ONVIF協議網絡攝像機
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服