У меня есть довольно стандартная функция, чтобы отправлять некоторые данные строки XML в удаленную службу WCF и извлекать результат. Он отлично работает, но не может масштабироваться до «большого» количества данных (138KB в этом случае.)Выдача запроса POST с большим количеством данных завершается с ошибкой в VB6
' performs a HTTP POST and returns the resulting message content
Function HttpPost(sUrl As String, sSOAPAction As String, sContent As String) As String
Dim oHttp As Object
'Set oHttp = CreateObject("Microsoft.XMLHTTP")
Set oHttp = CreateObject("MSXML2.XMLHTTP.6.0")
oHttp.open "POST", sUrl, False
oHttp.setRequestHeader "SOAPAction", """http://conducive.com.au/IXpacManagement/" & sSOAPAction & """"
oHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
oHttp.setRequestHeader "Content-Length", Len(sContent)
oHttp.send Str(sContent)
If oHttp.status = 200 Then
HttpPost = oHttp.responseText
Else
MsgBox "An error (" & LTrim(Str(oHttp.status)) & ") has occurred connecting to the server."
HttpPost = ""
End If
Set oHttp = Nothing
End Function
Когда я использую Microsoft.XMLHTTP
я получаю error 7 out of memory
.
Когда я использую MSXML2.XMLHTTP.6.0
, я получаю object doesn't support this property or method
.
В любом случае отправка небольшой строки под тысячей символов работает отлично.
Вот что я получаю, когда я пробовать различные способы отправки строки:
- Использование
oHttp.send(sContent)
: Даже небольшие заметки завершатьсяInvalid procedure call or argument Runtime error 5
. - Использование
oHttp.send sContent
: Даже небольшие POST-коды не работают сInvalid procedure call or argument Runtime error 5
.
В конце oHttp.send CStr(sContent)
работал. Спасибо всем за предложения, потому что я был потерян.
Просто комментируйте, чтобы довести до вашего сведения тот факт, что тег vb находится в процессе очистки (см. Бюллетень сообщества). Вы должны заменить его одним из четырех конкретных вариантов, не в последнюю очередь для того, чтобы убедиться, что вы получите помощь, которой вы помогаете! – Zulaxia
Попробуйте использовать промежуточный массив байтов: 'baBuffer = StrConv (...): .send CVar (baBuffer)' – wqw