Отсутствует текстовая информация ответа (вызов vb6)

Эта проблема сводила меня с ума, надеюсь, кто-то знает ответ, так как я не мог найти ни одного, ищущего вокруг.

Я пытаюсь получить доступ к веб-службе в одном из наших устаревших приложений vb6 со следующим:

Dim xmlHttpRequest As MSXML2.ServerXMLHTTP
Dim xmlParameters As String
Dim timeOutValue As Long

timeOutValue = 300 * 1000&
xmlParameters = "TradingPartnerName=" + inTradingPartnerName
Set xmlHttpRequest = New MSXML2.ServerXMLHTTP
xmlHttpRequest.Open "POST", urlString, False
xmlHttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttpRequest.setRequestHeader "Host", "xa-2k8:2016/"
xmlHttpRequest.setTimeouts timeOutValue, timeOutValue, timeOutValue, timeOutValue

xmlHttpRequest.sEnd (xmlParameters)

По сути, он выполняет вызов api с параметром TradingPartnerName со значением (в данном случае DSSI). Затем он вернет результат JSON, который позже будет проанализирован.

Посмотрев на wirehark, я получил следующее:

Результаты WireShark

Все нужные данные есть ...

Когда я смотрю на xmlHttpRequest.responseText после отправки (или декодирования .responseBody), я получаю следующее:

ResponseText : "{"$id":"1","TradingPartnerInformation":{"$id":"2","$values":[{"$id":"3","TradingPartnerKey":1,"TpName":"DSSI","SenderIdQualifier":"12","SenderId":"(removed)","ReceiverIdQualif"

Каждый раз он обрезается до 429 символов.

Вот тип контента, который отправляется обратно: Content-Type → application / json; charset = utf-8

Я делаю что-то неправильно? Или это ошибка в библиотеке? Я также пробовал с WinHTTP 5.1 и получил точный результат.

Из всех других примеров, которые я видел на stackoverflow, людям также не хватало данных в их анализе wirehark. В моем случае я вижу, что возвращаются все правильные данные, поэтому я просто не понимаю, почему они усекаются.

Заранее благодарим за любую помощь с этим!

РЕДАКТИРОВАТЬ: Я играл с кодировкой, углубляясь в предложение GSerg ... и обнаружил, что использование разных типов декодирования дает разные результаты, когда я конвертирую responseBody из двоичного в строку.

Следующим методом:

Function BinaryToString(ByVal Binary)
    BinaryToString = ""
    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")

    BinaryStream.Type = 1 '--- adTypeBinary

    BinaryStream.Open
    BinaryStream.Write Binary

    BinaryStream.Position = 0
    BinaryStream.Type = 2 '--- adTypeText

    BinaryStream.Charset = (UTF-8 or ASCII)

    BinaryToString = BinaryStream.ReadText
End Function

Если я сделаю кодировку "UTF-8", я получу следующее:

"{"$id":"1","TradingPartnerInformation":{"$id":"2","$values":[{"$id":"3","TradingPartnerKey":1,"TpName":"DSSI","SenderIdQualifier":"12","SenderId":"(removed)","ReceiverIdQua

Если я сделаю кодировку «ASCII», я получу следующее:

"{"$id":"1","TradingPartnerInformation":{"$id":"2","$values":[{"$id":"3","TradingPartnerKey":1,"TpName":"DSSI","SenderIdQualifier":"12","SenderId":"(removed)","ReceiverIdQualifier":"12","ReceiverId":"(removed)","ElementSeparator":"*","SubElementSea"

Итак, похоже, это проблема с кодировкой, но все еще не получается полный набор результатов при переходе на ASCII


person Scott    schedule 04.02.2015    source источник
comment
Помогает ли stackoverflow.com/q/10451064/11683?   -  person GSerg    schedule 04.02.2015
comment
Спасибо за предложение! Но, к сожалению, нет, я столкнулся с этим раньше, и когда я попытался использовать вместо него responseBody, он был усечен до того же места, что и после преобразования в строку.   -  person Scott    schedule 04.02.2015
comment
GSerg, ваш ответ был правильным. Мне потребовалось немного времени, чтобы понять это, но со всей добавленной мной информацией о редактировании responseBody действительно начал отправлять все данные, но отладчик все равно будет отображать только часть ответа, если я поставлю часы на test = BinaryToString (xmlHttpRequest .responseBody). Если бы я отправил его в окно сообщения, отобразилось бы полное значение. Похоже, я наложил ограничение только на это поле в отладчике. Спасибо за помощь! Добавьте это как ответ, и я приму это. Спасибо еще раз!   -  person Scott    schedule 04.02.2015
comment
На самом деле я не ответил, поэтому мне действительно нечего публиковать. Если вы нашли полезное разъяснение к ответу, на который я ссылался, вы должны опубликовать его и принять, иначе это почти как дубликат :)   -  person GSerg    schedule 04.02.2015


Ответы (1)


Это было ограничением самого отладчика vb6. Он не отображал полный ответ, хотя на самом деле он был там, если я выводил в окно сообщения или файл.

Использование MSXML2.ServerXMLHTTP для доступа к данным с веб-страницы возвращает усеченные данные в Lua, что помогло сделать этот вывод.

person Scott    schedule 23.02.2015