客户端用VB6开发,服务器用IIS5,安装了MSXML,想利用SOAP,有谁做过?
就是客户端通过SOAP/XML访问服务器上的数据,但不直接联接数据库。
客户端安装了SOAP Toolkit 3,但程序调试不过。提示:
缺少对象: 'objReq.SelectSingleNode(...)'
客户端提示:
对象变量或 With 块变量未设置
有谁做过吗?
问题点数:50、回复次数:7Top
1 楼gdyaojie(gzyj)回复于 2005-03-01 14:47:09 得分 0
测试例子
客户端程序:
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
Top
2 楼gdyaojie(gzyj)回复于 2005-03-01 14:47:54 得分 0
服务器端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
%>
Top
3 楼bdhh(Silent)回复于 2005-03-01 15:57:18 得分 50
既然装了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
Top
4 楼gdyaojie(gzyj)回复于 2005-03-01 16:34:22 得分 0
如果不用SOAP Toolkit,程序应该怎么写?Top
5 楼bdhh(Silent)回复于 2005-03-01 17:40:44 得分 0
1、你使用了命名空间SOAP,但声明却是xmlns:soap,大小写不一致
2、你使用了命名空间m,但是没有声明Top
6 楼Begin2008(重头再来)回复于 2005-03-01 19:03:18 得分 0
学习Top
7 楼gdyaojie(gzyj)回复于 2005-03-03 10:26:41 得分 0
我找到问题的解决方法了。谢谢大家的参与。Top




