1. 程式人生 > >[Teamcenter 2007 開發實戰] 調用web service

[Teamcenter 2007 開發實戰] 調用web service

clas cpm zsh cal dcl dip lba jta ppk

前言

在TC的服務端開發中, 能夠使用gsoap 來調用web service.

怎樣使用 gsoap , 參考

gsoap 實現 C/C++ 調用web service

接下來介紹怎樣在TC中進行開發。


開發的方式與環境搭建

在TC的CF端調用webservice , 能夠把gsoap 產生和完畢的代碼打成一個 .lib 的文件(windows, 在linux 下是 .a 的文件)

這裏使用的開發工具是 visual studio .

新建一個空的項目。 語言選 C++的就能夠了


技術分享

創建完畢之後的路徑如上。

上面的文件結構中。 除了 libsoa.h 和libsoa.c 文件外。 其它的文件都是gsoap依據 wsdl 產生的.

在libsoa.c 這份文件中面。 我們寫一些包裝 function 來供外部調用。

原因是gsoap 產生出來的function 名稱都比較長,不方便使用

相似 ns1__XXXXXX 這種。

要產生成 .lib 檔, 在項目的 屬性中做例如以下設置:


技術分享

設置完畢, 並完畢相關代碼的編寫, 就能夠產生 .lib 檔了

點擊 生成 --》 生成解決方式

這種話在項目的路徑下會產生一個Debug 文件夾。

途徑相似:

技術分享



開發中註意的一些問題

    returnflag=soap_call___ns1__batchExecuteSqls(&meSoap,Parameter.EndPoint, NULL, batchExecuteSqlsRequest, batchExecuteSqlsResponse);
    if (returnflag==28)
    {		
	    *ReturnCode=strdup("fail");
        *ReturnMsg=strdup("Could not connect to web service host!");
    }
    else if(batchExecuteSqlsResponse!=NULL)
    {
        *ReturnCode= strdup(batchExecuteSqlsResponse->ReturnCode);
        *ReturnMsg=strdup(batchExecuteSqlsResponse->ErrorMessage);
    }

相似上面的代碼:

返回值是28 代表不能連接 web service 的server。 這個時候response 裏面自然也就是空的了。


另外要註意的一個問題是:

以上產生的 .lib 是能夠在Visual studio 中進行調試的。

可是在協作開發的時候。 假設遇到無法調試的狀況, 能夠在本機使用源代碼又一次產生一個 .lib 檔試試



[Teamcenter 2007 開發實戰] 調用web service