이 문제는 나를 미치게했습니다. 희망을 갖고 누군가가 대답을 찾을 수 없어서 대답을 알고 있습니다.응답 텍스트 정보가 없습니다. (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)
그것은 기본적으로 (이 경우 값이 매개 변수 "TradingPartnerName"와 API를 호출을 " DSSI "). 나중에 구문 분석 된 JSON 결과를 반환합니다.
내가 Wireshark를보고에서 돌아가는 것은 다음 올바른 모든 데이터가
...
내가 보낸 후 xmlHttpRequest.responseText 볼
(또는 나는 다음과 같은 수) .responseBody을 디코딩 :ResponseText : "{"$id":"1","TradingPartnerInformation":{"$id":"2","$values":[{"$id":"3","TradingPartnerKey":1,"TpName":"DSSI","SenderIdQualifier":"12","SenderId":"(removed)","ReceiverIdQualif"
그것은 429 문자의 모든 시간에 절단
다음은 다시 전송할 콘텐츠 유형입니다. 콘텐츠 유형 → application/json; charset = utf-8
내가 잘못 했나요? 아니면 도서관의 버그입니까? 나는 또한 WinHTTP 5.1로 시도하고 정확한 결과를 얻었다.
내가 stackoverflow에서 본 다른 모든 예제에서 사람들은 wireshark 분석에서도 데이터가 누락되었습니다. 내 경우, 모든 올바른 데이터가 반환되는 것을 볼 수 있으므로 왜 잘리지 않는지 알 수 없습니다.
미리 감사드립니다.
EDIT : 나는 GSerg의 제안에 더 깊이 파고 들어가는 인코딩으로 연주했으며, 이진 형식의 responseBody를 문자열로 변환 할 때 다른 디코드 형식을 사용하면 다른 결과를 얻습니다. 나는 캐릭터 "UTF-8"을 한 경우
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
내가 다음 얻을 : 다음과 같은 방법으로
나는 캐릭터 세트를 만들 경우
"{"$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로 전환하면 전체 결과 집합을 얻지 못하는 것 같습니다.
가 http://stackoverflow.com/q/10451064/11683 도움이됩니까이 결론을 도출 도움이? – GSerg
제안 해 주셔서 감사합니다. 그러나 슬프게도, 나는 이전에 그것을 보았습니다. 대신 responseBody를 사용하려고 시도했을 때 문자열로 변환 된 정확한 자리로 잘 렸습니다. – Scott
GSerg, 당신의 대답은 실제로 맞는 것입니다. 이 점을 이해하는 데 조금 시간이 걸렸지 만, 내가 추가 한 모든 수정 정보가 있습니다. "responseBody"가 모든 데이터를 보내기 시작했으나 test = BinaryToString에 대한 감시를 설정하면 디버거에서 응답의 일부만 표시합니다. (xmlHttpRequest.responseBody). 그래도 메시지 상자로 보내면 전체 값이 표시됩니다. 그래서 나는 디버거에서만 그 필드에 대한 제한을 치는 것처럼 보입니다. 도움 주셔서 감사합니다. 대답으로 추가하면 받아 들일 것입니다. 다시 한 번 감사드립니다! – Scott