سؤال

لقد شعرت بالذهول لماذا لا يبدو أن هذا لا ينجح يجد أي مشاكل.

هنا هو الرمز.

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

الآن هذا أدناه يعمل (على الرغم من أنه مجرد نموذج HTML).

<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>

هنا شم حزمة. (تغيير المضيف وما إلى ذلك على سبيل المثال بعد)

post/http/1.1..user-agent: alalala .. نوع content: multipart/form-data ؛ الحدود = السرعة .. طول الطول: 233..Accept: /.. host: poster.example.com..connection: keep-alive ....- السرعة ..- content-dispostion: form-data ؛ name = "function" ....- التوازن ..-- السرعة ..- content-dispostion: form-data ؛ name = "username" .... blah ..-- speed..ortent-dispostion: form-data ؛ الاسم = "كلمة المرور" .... بلاه ..-- السرعة-..

الاستجابة فارغة

http/1.1 200 ok..date: thu ، 07 Oct 2010 20:31:20 GMT..Server: Apache..Content-Length: 0..connection: close..content-type: text/html ؛ charset = UTF-8 ....

PS> لا يجب إرسال زر إرسال القيمة مع القيمة ، لذلك ليس هذا الأمر إذا كان أي شخص يتساءل. ما يمكن أن يكون ولاحظت من استنشاقه هو أنه يرسل بيانات Post header + (بيانات التحميل) لأن حزمة واحدة وترسلها Firefox/Chrome كحزمة منفصلة.

شكرًا لك

هل كانت مفيدة؟

المحلول

خطأ إملائي محتوى dispostion يجب أن يكون تحديد المحتوى نعم شكرا لذلك كنت أعاني لمدة 6؟ ربما 7 ساعات.

تم حلها أخيرًا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top