HTTP-запрос VBA POST, возвращающий пустую строку

Я работаю над процедурой в MS-Access VBA для отправки текстовой строки XML в веб-службу и обработки текстовой строки XML, возвращаемой из службы.

Проблема, с которой я сталкиваюсь, заключается в том, что свойство responseText всегда пусто, когда оно должно содержать текстовую строку XML. Ошибки не возвращаются и .status = "ОК".

Я пробовал объекты 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.

Может ли кто-нибудь помочь мне решить мою проблему?


person PcDave69    schedule 09.04.2018    source источник
comment
Это внутренний URL?   -  person QHarr    schedule 09.04.2018
comment
Изучите оба запроса из документа и VBA с помощью e. грамм. Скрипач, чтобы найти разницу.   -  person omegastripes    schedule 10.04.2018
comment
Нет. URL-адрес является адресом сторонней веб-службы.   -  person PcDave69    schedule 10.04.2018


Ответы (1)


Я нашел проблему с помощью Fiddler.

Строка, задающая заголовок авторизации

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

Добавлял (") в строку заголовка. Исправленная строка

.SetRequestHeader "Authorization", "Basic " & sCred 

Спасибо за помощь

person PcDave69    schedule 10.04.2018