0

我正在使用 MS-Access VBA 中的一个过程,将 XML 文本字符串 POST 到 Web 服务并处理从服务返回的 XML 文本字符串。

我遇到的问题是 responseText 属性在它应该包含 XML 文本字符串时始终为空。不返回任何错误并且 .status = "OK"。

我已经尝试过 WinHttp.WinHttpRequest、MSXML2.XMLHTTP 和 MSXML2.ServerXMLHTTP 对象,并且始终遇到同样的问题。

这是一个代码示例:

Public Function Send() As Boolean
  Dim oXHR As MSXML2.XMLHTTP60
  Dim sURL, sCred As String
  Dim sRequest, sResult, sStatus, sHeader As String
  Dim bRtn As Boolean

  BuildReqXML
  sRequest = Me.RequestXML_String

  With orsValues
    sURL = .Fields("WebServiceURL").Value
    sCred = Base64Encode(Trim(.Fields("User").Value) & ":" &  Trim(.Fields("Password").Value))
  End With

  Set oXHR = New MSXML2.XMLHTTP60
  With oXHR

    .Open "POST", sURL, False
    .SetRequestHeader "Authorization", "Basic " & sCred & """"

    .SetRequestHeader "User-Agent", "Mozilla/4.0"
    .SetRequestHeader "Content-Type", "text/xml"

    .Send sRequest

    sStatus = .StatusText
    sResult = .ResponseText
    sHeader = .GetAllResponseHeaders

    If sResult <> "" Then
      If Contains(sResult, "<") Then ReadXML sResult, "Response"
      Debug.Print sResult
    Else
      Debug.Print sHeader
      Debug.Print sRequest
    End If
  End With

  Set oXHR = Nothing

End Function

我已经通过在 HTML 文档中构建类似的调用、发送 XML 字符串和接收响应 XML 字符串来验证 Web 服务是否正常工作。

有人可以帮我解决我的问题吗?

4

1 回答 1

0

在 Fiddler 的帮助下,我找到了问题所在。

设置授权标头的行

.SetRequestHeader "Authorization", "Basic " & sCred & """"

正在向标题行添加(“)。更正的行是

.SetRequestHeader "Authorization", "Basic " & sCred 

谢谢您的帮助

于 2018-04-10T13:24:13.330 回答