POST到WCF服务

时间:2015-10-27 15:42:38

标签: xml wcf vbscript asp-classic

我通过以下方式调用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字符串搜索一个混乱的例程。

0 个答案:

没有答案