gsoap调用webservice的方法步骤:
生成存客户端存根程序和框架
wsdl2h -o xxx.h xxx.wsdl(-t D:/gsoap-2.7/gsoap/typemap.dat)
soapcpp2 -L -x -i xxx.h(-I D:/gsoap-2.7/gsoap/import)
2.或直接自己编写xxx.h,并生成xxx.wsdl
//gsoap ns service name: xxx
//gsoap ns service style: rpc
//gsoap ns service encoding: literal
//gsoap ns service location: ht//localhost:8080
//gsoap ns schema namespace: ht/localhost:8080/xxx.wsdl
int ns__add(int a, int b, int* result)
3.客户端1) 把如下生成的文件添加到项目:stdsoap2.h,stdsoap2.cpp,soapH.h,soapC.cpp,soapStub.h,soapxxxProxy.h,soapxxxProxy.cpp,xxxSoap.nsmapwsock32.lib
2) 代理方式调用
#include "soapTestWebServiceProxy.h"
#include "Test www.hbbz08.com WebService.nsmap"
int main(int argc, char* argv[])
{
int result = 0
TestWebServiceProxy proxy
proxy.add(12, 23, &result)
} //w
4.服务端
1) 把如下生成的文件添加到项目:
stdsoap2.h,stdsoap2.cpp,
soapH.h,soapC.cpp,soapStub.h,
soapxxxService.h,soapxxxService.cpp,xxxSoap.nsmap
wsock32.lib
2) 实现接口函数
int TestWebServiceService::add(int a, int b, int *result)
{
*result = a+b
return SOAP_OK
} /
3) 开启服务
#include "soapTestWebServiceService.h"
#include "TestWebService.nsmap"
int main(int argc, char* argv[])
{
TestWebServiceService service
service.run(8080)
一、WebService在cs后台程序中的调用A、通过命名空间和类名直接调用
示例:
WebService ws = new WebService()
string s = ws.HelloWorld()
B、通过添加WEB引用的方式调用,首先添加WEB引用,通过URL指向WEBSERVICE,
指定WEB引用名,假设为KK
示例:
kk.WebService n = new kk.WebService()
string ss=n.HelloWorld()
二、WebService在前台页面的JS 调用方法
1、首先通过下面的方法把Webservice在前台引用进来
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" InlineScript="True" />
</Services>
</asp:ScriptManager>
2、然后就可以通过JS程序进行调用,示例如下:
<script type="text/jscript">
function a()
{
WebService.HelloWorld(onresult)
}
//这里的onresult是回调函数
function onresult(result)
{
alert(result)
}
function b()
{
WebService.add(1,2,onreturn)
}
function onreturn(result)
{
alert(result)
}
//下面的'context'是上下文,可以通过回到函数通过重载的方式获得;
function c()
{
WebService.div(1,1,onresultC,onerror,'context')
}
function onresultC(res,c)
{
alert(res)
alert(c)
}
//onerror是获得异常信息的回调函数,下面给出了获得异常信息的方法
function onerror(error)
{
var a=""
a=String.format("获取服务器端异常的具体类型:{0}\t\n获取详细的异常描述信息:{1}\t\n获取造成异常的:{2}\t\n获取服务器端异常的堆栈
跟踪信息:{3}\t\n获取一个布尔值,表示异常是否是由于网络连接超时造成的{4}",
error.get_exceptionType(),
error.get_message(),
error.get_statusCode(),
error.get_stackTrace(),
error.get_timedOut())
alert(a)
}
a()
b()
c()
</script>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)