缺少responseText信息(vb6调用)

时间:2015-02-04 14:38:52

标签: json vb6 responsetext serverxmlhttp

这个问题一直让我发疯,希望那里有人知道答案,因为我无法找到一个人在寻找。

我正在尝试使用以下内容访问我们的旧版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)

它基本上使用参数" TradingPartnerName"进行api调用。带有值(在这种情况下" DSSI")。然后它将返回一个JSON结果,稍后将对其进行解析。

我从wireshark看到的内容如下:

WireShark results

所有正确的数据都在......

当我在发送(或解码.responseBody)之后查看xmlHttpRequest.responseText时,我得到以下内容:

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

每次都会截断429个字符

以下是发回的内容类型: Content-Type→application / json;字符集= UTF-8

我做错了吗?或者它是库中的错误?我也试过WinHTTP 5.1并得到了确切的结果。

从我在stackoverflow上看到的所有其他示例中,人们也在他们的wireshark分析中缺少数据。在我的情况下,我看到所有正确的数据都被返回,所以我不知道为什么会被截断。

提前感谢您对此的任何帮助!

编辑: 我使用编码挖掘更深入到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

时仍然没有得到完整的结果集

1 个答案:

答案 0 :(得分:0)

这是vb6调试器本身的限制。它没有显示完整的响应,即使事实上我已输出到消息框或文件。

Using MSXML2.ServerXMLHTTP to access data from a web page returns truncated data in Lua帮助得出了这个结论