VBA HTTP请求POST返回空字符串

时间:2018-04-09 18:52:21

标签: vba xmlhttprequest winhttprequest

我正在使用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服务是否正常工作。

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

1 个答案:

答案 0 :(得分:0)

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

设置授权标题的行

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

在标题行中添加了一个(“)。修正后的行是

.SetRequestHeader "Authorization", "Basic " & sCred 

感谢您的帮助