我通过以下方式调用WCF服务:
Dim SOAPResponse, SOAPRequest, serviceUrl, strResult
serviceUrl = "https://api.mydomain/Services/myAPIService.svc"
Set SOAPRequest = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
SOAPRequest = "this is where my xml gets built"
Dim oXmlHTTP : Set oXmlHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
oXmlHTTP.setOption 2, 13056
oXmlHTTP.Open "POST", serviceUrl, False
oXmlHTTP.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8; action=""http://tempuri.org/ImyAPIService/InsertPerson"""
oXmlHTTP.setRequestHeader "Content-Length", Len(SOAPRequest)
oXmlHTTP.setRequestHeader "SOAPAction", "http://tempuri.org/IMyApiService/InsertPerson"
oXmlHTTP.send SOAPRequest
SOAPRequest构建一个有效的soap信封,然后将其发布到服务器。问题是,当我发布到服务时,我的XmlHTTP.responseText是有效的并包含soap回复,但XmlHTTP.responseXML.xml是一个空字符串。
作为示例返回的responseText如下:
--uuid:17c8815c-33cd-4ccd-aaab-f0246cc26f65+id=2
Content-ID: <http://tempuri.org/0>
Content-Transfer-Encoding: 8bit
Content-Type: application/xop+xml;charset=utf-8;type="application/soap+xml"
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">
http://tempuri.org/IMyApiService/InsertPersonResponse
</a:Action>
</s:Header>
<s:Body>
<InsertPersonResponse xmlns="http://tempuri.org/">
<InsertPersonResult xmlns:b="http://schemas.datacontract.org/2004/07/MyApi.Models.Response" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorDetails i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/MyApi.Models.Response.Base"/>
<IsSuccessful xmlns="http://schemas.datacontract.org/2004/07/MyApi.Models.Response.Base">false</IsSuccessful>
<b:ID>0</b:ID>
</InsertPersonResult>
</InsertPersonResponse>
</s:Body>
</s:Envelope>
--uuid:17c8815c-33cd-4ccd-aaab-f0246cc26f65+id=2--
我猜这是因为xml无效,因为我的内容类型是application / soap + xml,所以--uuid位和其他soap相关信息无效xml。
如果我将内容类型更改为text / xml,则服务会拒绝该请求,因为内容类型不正确。
基本上我需要从响应中获取IsSuccessful和ID值,然后继续我的函数,关于如何修改服务或我的vbscript的任何想法,以便我可以使用responseXML.xml并根据需要查询?
我宁愿能够查询xml而不是通过responseText字符串搜索一个混乱的例程。