PowerBuilder9.0 使用xmlhttp组件调用webservice

病案管理DRGS接口的工作笔记
//-----------------------------------------------------------------------------------------------

 

今天在这里写个备忘录,以后用到可以当作参考

powerbuilder9.0自带的pbsoapclient.pbd,可以很方便的调用webservices,但是在目标电脑上经常发生运行时错误,
估计是多个pb版本造成的动态库版本不一致引起的。

于是改成使用xmlhttp组件来调用。

1.根据wsdl文件生成报文

2.根据报文例子,生成请求的body,代码如下 

//创建XMLHTTP控件--------------------------------------------------------------------------
http = Create OLEObject 
li_ret = http.ConnectToNewObject( "Msxml2.XMLHTTP")
If li_ret <> 0 Then
	li_ret  = http.ConnectToNewObject( "Msxml2.XMLHTTP.3.0")
End If
if(li_ret <> 0 )  then
	is_error = "Msxml2组件初始化失败!"
	return -1
end if 

//构造报文内容-----------------------------------------------------------------------------
ls_xml = "<?xml version=~"1.0~" encoding=~"utf-8~"?>" 
ls_xml += "<soap:Envelope xmlns:xsi=~"http://www.w3.org/2001/XMLSchema-instance~" xmlns:xsd=~"http://www.w3.org/2001/XMLSchema~" xmlns:soap=~"http://schemas.xmlsoap.org/soap/envelope/~">"
ls_xml += "<soap:Body>"
ls_xml += "<MedicalServiceXml xmlns=~"http://tempuri.org/~">"
ls_xml += "<serviceId>"+is_serviceid+"</serviceId>"
ls_xml += "<userId>"+UserID+"</userId>"
ls_xml += "<nonce>"+nonce+"</nonce>"
ls_xml += "<data>"+is_data+"</data>"
ls_xml += "<siginMethod>"+siginmethod+"</siginMethod>"
ls_xml += "<signData>"+signdata+"</signData>"
ls_xml += "</MedicalServiceXml>"
ls_xml += "</soap:Body>"
ls_xml += "</soap:Envelope>"
 
//转换编码格式UTF8-------------------------------------------------------------------------
CString Conver
Conver.ToUnicode(ls_xml,lblb_args)
ll_length = Len(lblb_args)

//提交请求---------------------------------------------------------------------------------
http.Open("POST",ls_url,True)
http.setRequestHeader("Content-Type","text/xml; charset=utf-8")
http.setRequestHeader("SOAPAction","http://tempuri.org/MedicalServiceXml")
http.setRequestHeader("Content-Length",String(ll_length)) 
http.setRequestHeader("Host","10.84.195.21")
http.Send(lblb_args)

//接收返回结果----------------------------------------------------------------------------- 
Do While http.readyState <> 4 //查询状态,延时
Yield()
Loop


node = http.responseXML.selectSingleNode("//MedicalServiceXmlResult")
if isnull(node) then 
		is_error = "返回报文无效!"
		return -1
end if 

//读取XML节点数据------------------------------------------------------------------- 
is_result  = string(node.text );  
http.DisconnectObject() 
Destroy http

if(is_result = "") then 
	is_error = "返回报文无效!"
	return -1 
end if 

return 0 
 

powerbuilder9.0真是一个好东东,非常的强大,超级好用啊。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要在VB6.0中调用Web服务接口,可以按照以下步骤进行操作: 1. 在VB6.0中创建一个新的标准EXE项目。 2. 在“项目”菜单中选择“引用”,然后在“可用引用”列表中找到“Microsoft SOAP Type Library v3.0”并选中它,然后单击“确定”按钮。 3. 在VB6.0中添加一个Web服务引用。在“项目”菜单中选择“添加Web引用”,然后在“地址”框中输入Web服务的URL地址,单击“添加引用”按钮。 4. 在VB6.0中编写代码来调用Web服务接口。可以使用“CreateObject”函数来创建Web服务对象,然后使用该对象的方法来调用Web服务接口。 例如,以下代码演示了如何调用Web服务接口并获取返回值: Dim objWebService As Object Dim strResult As String Set objWebService = CreateObject("WebServiceName.WebServiceClassName") strResult = objWebService.WebServiceMethodName("参数1", "参数2") MsgBox strResult 注意,上述代码中的“WebServiceName”、“WebServiceClassName”和“WebServiceMethodName”应替换为实际的Web服务名称、类名和方法名。 希望这些信息能够帮助您在VB6.0中成功调用Web服务接口。 ### 回答2: VB6.0是一个老旧的开发工具,现在已经不再得到微软的支持,但仍有很多老旧的系统使用它来开发。现在很多软件都使用WebService接口来实现不同系统之间的通讯,因此在使用VB6.0开发时,调用WebService接口也是很常见的需求。 在VB6.0中调用WebService接口需要使用SOAP(Simple Object Access Protocol)协议,SOAP是一种轻量级协议,用于在不同应用程序之间交换结构化和松散耦合的信息。 下面是实现VB6.0调用WebService接口的一般步骤: 1. 引用WebService 在VB6.0程序中,要实现调用WebService接口,首先需要在项目中添加对该WebService的引用。在VB6.0的菜单栏中,选择 “Project” –> “References”,在弹出的窗口中选择“Microsoft SOAP Type Library v3.0”(或更高版本),然后点击“OK”按钮应用更改。 2. 实现WebService客户端类 在 VB6.0 中实现客户端类,用于访问Web Service中方法,读写Web Service配置信息等。 要实现WebService客户端类,需要在VB6.0中新建一个类模块,并在该模块中添加对WebService对象的引用。下面是一个示例代码: ``` Public WithEvents objWebService As MSSOAPLib30.SoapClient Private Sub Class_Initialize() Set objWebService = New MSSOAPLib30.SoapClient objWebService.MSSoapInit pagemywebservice.asmx?WSDL End Sub ``` 该代码中,所引用的WebService名称为pagemywebservice.asmx,客户端类被初始化时,调用MSSoapInit方法,以向WebService发出请求并获取返回。 3. 调用WebService方法 由于VB6.0使用SOAP协议,因此调用WebService方法时需要指定方法名及传递的参数。下面是一个调用WebService方法的示例代码: ``` Dim strResult As String strResult = objWebService.Calculation(1, 2, 3) '其中Calculation为WebService中的一个方法名,传递的参数为1、2和3 MsgBox strResult '显示WebService返回的结果 ``` 通过以上步骤,就可以在VB6.0中调用WebService接口了。但需要注意的是,由于VB6.0已经不再得到微软的支持,因此在使用VB6.0开发时应当考虑其兼容性和安全性等问题。如果可能,应当尽量采用更为现代的开发工具来实现该功能。 ### 回答3: VB6.0是一款老旧的开发工具,但仍有部分企业使用它来维护早期的系统。在该版本中,我们可以通过SOAP组件调用web服务接口。 在VB6.0中,可以用XMLHTTP对象来向Web服务器请求数据。对于Web上的XML Web服务,可以使用MS Soap SDK,该SDK包括一个叫做MS Soap Toolkit的ActiveX control(MSSOAP30.dll),可用于在VB6.0中创建web服务客户端。具体步骤如下: 1.打开VB6.0,新建一个项目。 2.打开工具箱(工具箱默认位于VB6.0的左侧),找到Microsoft SOAP Toolkit 3.0组件,并将其拖拽到窗体上。 3.双击刚刚拖拽的MS Soap Control组件,在弹出的SOAP Control属性窗口中,将ServiceUrl属性设置为你要调用的web服务接口地址。 4.在窗体中添加一个Command按钮,在按钮的Click事件中添加以下代码: '定义soapClient对象 Dim soapClient As New MSSOAPLib30.SoapClient30 '调用web服务 Dim responseData As String responseData = soapClient.FunctionName(param1, param2) 5.将上面的代码中的FunctionName改为要调用的web服务方法名,param1和param2是web服务方法所需要的参数,可以根据web服务方法的具体要求进行传递。同时也要将获取到的返回值responseData输出到界面上供用户查看。 通过以上这些步骤,就能在VB6.0中成功调用web服务接口。虽然VB6.0已逐渐被淘汰,但对于老系统维护而言,仍有一定的实用价值,需要在此基础上进行扩展和更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

衢州大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值