POST-Methode + WinHttpRequest + multipart / form-data
-
28-09-2019 - |
Frage
Ich bin ratlos, warum das nicht funktioniert kann keine Probleme zu finden scheint.
Hier ist der Code.
Public Const MULTIPART_BOUNDARY = "speed"
Function getBalance() As String
Dim sEntityBody As String
Dim postBody() As Byte
Dim username As String
Dim password As String
username = CStr(frmMain.txtUser.text)
password = CStr(frmMain.txtPass.text)
sEntityBody = "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""function""" & vbCrLf & vbCrLf & "balance" & vbCrLf
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""username""" & vbCrLf & vbCrLf & username & vbCrLf
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""password""" & vbCrLf & vbCrLf & password & vbCrLf
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & "--" & vbCrLf
postBody = StrConv(sEntityBody, vbFromUnicode)
Dim xhr As Object
Set xhr = CreateObject("WinHttp.WinHttpRequest.5.1")
xhr.Option(WinHttpRequestOption_EnableRedirects) = False
If xhr Is Nothing Then Set xhr = CreateObject("WinHttp.WinHttpRequest")
If xhr Is Nothing Then Set xhr = CreateObject("MSXML2.ServerXMLHTTP")
If xhr Is Nothing Then Set xhr = CreateObject("Microsoft.XMLHTTP")
xhr.open "POST", "http://poster.example.com", False
xhr.setRequestHeader "User-Agent", "Alalala"
xhr.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & MULTIPART_BOUNDARY
xhr.setRequestHeader "Content-Length", Len(sEntityBody)
xhr.send "" + sEntityBody 'postBody 'URLEncode(sEntityBody)
If xhr.Status = 200 Then
getBalance = xhr.responseText
Else
frmMain.addToChatbox "Failed at getting response from blah ErrCode:" & xhr.Status
End If
End Function
Nun ist diese unterhalb Werken (obwohl es nur eine HTML-FORM).
<form
method="post"
action="http://poster.example.com/"
enctype="multipart/form-data">
<input type="hidden" name="function" value="balance">
<input type="text" name="username" value="blah">
<input type="text" name="password" value="blah">
<input type="submit" value="Send">
</form>
Hier ist ein Paket schnüffeln. (Altered den Host usw. Beispiel nach)
POST / HTTP / 1.1..User-Agent: Alalala..Content-Type: Multipart / Form-Daten; boundary = speed..Content-Länge: 233..Accept: / .. Host: poster.example.com..Connection: Keep-Alive ....-- speed..Content-dispos: form-data; name = "Funktion" .... Balance ..-- speed..Content-dispos: Formulardaten; name = "username" .... blah ..-- speed..Content-dispos: Formulardaten; name = "Passwort" .... blah ..-- Geschwindigkeit - ..
Antwort ist leer
HTTP / 1.1 200 OK..Date: Do 7. Oktober 2010 20.31.20 GMT..Server: Apache..Content-Länge: 0..Connection: close..Content-Type: text / html; charset = UTF-8 ....
P. S.> Die Submit-Button mit dem Wert Senden nicht so thats gesendet werden muss es nicht, wenn jemand fragt. Was könnte es sein, und ich habe von Sniffing aufgefallen ist, dass es die Header + post-Daten (Upload-Daten) als ein Paket und Firefox sendet / chrom sendet sie als zwei separate Pakete.
Danke
Lösung
falsch geschrieben Content-Disposition muß Content-Disposition yup dank, dass ich Leid für 6 waren? vielleicht 7 Stunden.
gelöst schließlich