【问题标题】:VBA HTTP Request POST returning empty stringVBA HTTP 请求 POST 返回空字符串
【发布时间】:2018-09-19 06:07:20
【问题描述】:

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

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

【问题讨论】:

  • 这是一个内部 URL?
  • 使用 e 检查来自文档和 VBA 的请求。 G。 Fiddler 来找出不同之处。
  • 没有。该 URL 是第 3 方网络服务地址。

标签: vba xmlhttprequest winhttprequest


【解决方案1】:

在 Fiddler 的帮助下,我发现了问题。

设置授权标头的行

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

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

.SetRequestHeader "Authorization", "Basic " & sCred 

感谢您的帮助

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2015-09-27
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多