如何使用 qt+gsoap 调用 webservice

如何使用 qt+gsoap 调用 webservice,第1张

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>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11813793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存