2015-06-27 23 views
12

Ich versuche HTTP-Post über VBA zu senden. Hier ist mein Teil des CodesVBA HTTP POST funktioniert nicht

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
objHTTP.Open "POST", url, False 
objHTTP.setRequestHeader "User-Agent", "EPS 1.0" 
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
objHTTP.setRequestHeader "content", postString 
objHTTP.setRequestHeader "Content-Length", Len(postString) 
objHTTP.send 

Das Problem ist, wird der Code funktioniert nur, wenn die postString weniger als 65535 Zeichen. Wenn es 65535 Zeichen überschreitet, wirft es Fehler auf unterhalb der Linie:

ERROR: Incorrect parameter

objHTTP.setRequestHeader "content", postString 

Irgendwelche Ideen dazu? Muss ich einen anderen Parameter einstellen, damit es funktioniert?

+0

Was passiert, wenn Sie Ihren postString über 'send' senden? Also, komm out "objHTTP.setRequestHeader" Inhalt ", postString" und ändern Sie "objHTTP.send postString" – TEK

+0

@TEK Ich habe versucht und keine Fehler erhalten. Aber die Antwort ist ein Fehler, was bedeutet, dass der Server keinen Inhalt erhalten hat. –

+0

Der Grund dafür ist, dass der Server nur die Inhalte annimmt, die über den Header gesendet werden. Aus diesem Grund sende ich per Header –

Antwort

3

Per: https://support.microsoft.com/en-us/kb/290591

Diese sollte arbeiten:

postString = "id=" & String(66000,"x") 
Dim xmlhttp 
Set xmlhttp = Createobject("MSXML2.ServerXMLHTTP") 
xmlhttp.Open "POST", url, false 
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
xmlhttp.send postString 

Ist dies der Fall nicht Arbeit, dann vielleicht gibt es etwas mit Ihrem serverseitigen Setup los.

+0

Können Sie erklären "" id = "& String (66000, "x") ' –

+0

Das war nur eine Dummy-Datenzeichenfolge, die zum Testen übergeben wurde: ein Parameter namens" id "mit einem 66k-Zeichen. –

+0

Gleiches Problem .. Der Server hat nichts per Post erhalten. Wenn es <65535 ist, sah ich die Post-Daten im Server. Und auch, die vollständigen Daten erhalten, wenn ich dies in Perl und PHP überprüft habe. Also klar, das ist ein VBA-Problem –

Verwandte Themen