0

MS-Access VBA で、XML テキスト文字列を Web サービスに POST し、サービスから返された XML テキスト文字列を処理する手順に取り組んでいます。

私が抱えている問題は、XML テキスト文字列を含める必要がある場合、responseText プロパティが常に空であることです。エラーは返されず、.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