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 サービスが正しく動作していることを確認しました。
誰かが私の問題を解決するのを手伝ってくれますか?