客户端用VB6开发,服务器用IIS5,安装了MSXML,想利用SOAP,有谁做过?

gdyaojie 2005-03-01 02:33:19
就是客户端通过SOAP/XML访问服务器上的数据,但不直接联接数据库。
客户端安装了SOAP Toolkit 3,但程序调试不过。提示:
缺少对象: 'objReq.SelectSingleNode(...)'

客户端提示:
对象变量或 With 块变量未设置

有谁做过吗?
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdyaojie 2005-03-03
  • 打赏
  • 举报
回复
我找到问题的解决方法了。谢谢大家的参与。
Begin2008 2005-03-01
  • 打赏
  • 举报
回复
学习
胖河马 2005-03-01
  • 打赏
  • 举报
回复
1、你使用了命名空间SOAP,但声明却是xmlns:soap,大小写不一致
2、你使用了命名空间m,但是没有声明
gdyaojie 2005-03-01
  • 打赏
  • 举报
回复
如果不用SOAP Toolkit,程序应该怎么写?
胖河马 2005-03-01
  • 打赏
  • 举报
回复
既然装了SOAP Toolkit,那就不要自己处理xml了!!

服务器端:做好dll然后用SOAP Toolkit带的WSDL Generator生成WSDL和asp文件,配置好站点

客户端:
Dim soap As SoapClient30
Set soap = New SoapClient30
Call soap.MSSoapInit("http://server/a/abc.wsdl") '指向wsdl文件
MsgBox soap.Add(12, 44) '调用dll中的Add方法
Set soap = Nothing

gdyaojie 2005-03-01
  • 打赏
  • 举报
回复
服务器端soap.asp:
<%
' Set objReq = Server.CreateObject("Microsoft.XMLDOM")
Set objReq = Server.CreateObject("MSXML2.DOMDocument")
'加载请求到XML DOM
objReq.async = False
objReq.Load Request

'按照输入参数查询
strQuery = "SOAP:Envelope/SOAP:Body/m:GetSalesTax/SalesTotal"
varSalesTotal = objReq.SelectSingleNode(strQuery).Text

'计算
varSalesTax = varSalesTotal * 0.04

'准备返回信封
strTmp = _
"<SOAP:Envelope xmlns:soap=""urn:schemas-xmlsoap-org:soap.v1"">" & _
"<SOAP:Header></SOAP:Header>" & _
"<SOAP:Body>" & _
"<m:GetSalesTaxResponse>" & _
"<SalesTax>" & varSalesTax & "</SalesTax>" & _
"</m:GetSalesTaxResponse>" & _
"</SOAP:Body>" & _
"</SOAP:Envelope>"

'回写结果文件
Response.Write strTmp
%>
gdyaojie 2005-03-01
  • 打赏
  • 举报
回复
测试例子
客户端程序:
Sub main()
Dim objHTTP As New MSXML2.XMLHTTP
Dim strEnvelope As String
Dim strReturn As String
Dim objReturn As New MSXML2.DOMDocument
Dim dblTax As Double
Dim strQuery As String



'创建SOAP封装
strEnvelope = _
"<SOAP:Envelope xmlns:soap=""urn:schemas-xmlsoap-org:soap.v1"">" & _
"<SOAP:Header></SOAP:Header>" & _
"<SOAP:Body>" & _
"<m:GetSalesTax>" & _
"<SalesTotal>100</SalesTotal>" & _
"</m:GetSalesTax>" & _
"</SOAP:Body>" & _
"</SOAP:Envelope>"

'设定发往本地服务器
objHTTP.open "post", "http://172.16.30.196/a/soap.asp", False

'设定标准SOAP/ XML格式
' objHTTP.setRequestHeader "Content-Type", "text/xml"

'SOAP呼叫
objHTTP.send strEnvelope

'取出返回信封
strReturn = objHTTP.responseText

'加载到DOM
objReturn.loadXML strReturn

'查询返回值
strQuery = _
"//SOAP:Envelope/SOAP:Body/m:GetSalesTaxResponse/SalesTax"
dblTax = objReturn.selectSingleNode(strQuery).Text

Debug.Print dblTax

End Sub

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧