前言
在TC的服务端开发中, 能够使用gsoap 来调用web service.
怎样使用 gsoap , 參考
gsoap 实现 C/C++ 调用web service 接下来介绍怎样在TC中进行开发。
开发的方式与环境搭建
在TC的CF端调用webservice , 能够把gsoap 产生和完毕的代码打成一个 .lib 的文件(windows, 在linux 下是 .a 的文件)
这里使用的开发工具是 visual studio .
新建一个空的项目。 语言选 C++的就能够了
![[Teamcenter 2007 开发实战] 调用web service_sql](https://s2.51cto.com/images/blog/202108/07/6cadaca04870f25b6ff06f6907bbd036.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
创建完毕之后的路径如上。
上面的文件结构中。 除了 libsoa.h 和libsoa.c 文件外。 其它的文件都是gsoap依据 wsdl 产生的.
在libsoa.c 这份文件中面。 我们写一些包装 function 来供外部调用。
原因是gsoap 产生出来的function 名称都比較长,不方便使用
相似 ns1__XXXXXX 这种。
要产生成 .lib 档, 在项目的 属性中做例如以下设置:
![[Teamcenter 2007 开发实战] 调用web service_c++_02](https://s2.51cto.com/images/blog/202108/07/c6e6a6accf2a4f0e6f64b6a69e990063.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
设置完毕, 并完毕相关代码的编写, 就能够产生 .lib 档了
点击 生成 --》 生成解决方式
这种话在项目的路径下会产生一个Debug 文件夹。
途径相似:
![[Teamcenter 2007 开发实战] 调用web service_c++_03](https://s2.51cto.com/images/blog/202108/07/39fc9b5f75efdff8e0324ea6d081fe25.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
开发中注意的一些问题
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 档试试
















