HTTP - Form - Request

GodWar

Erfahrenes Mitglied
Guten Abend! Ich hab das Inet jetzt 2 Stunden abgegraßt aber nix gefunden. Ich möchte meinem PHP Script auf meinem Server folgendes schicken "****.php?typ=0". Aber als POST Form. Der untere Code ist für VB6. t auch wunderbar. Möchte das ganze nun auf VB.Net übertrage. Problem ist HIER wo ich bin ist ein Router also geht "myRequest.GetResponse" nicht, da durch Proxy gesperrt. Aber die untere Methode funktioniert. Er machts mit "Navigate". Ganz einfach einen Link mit einem Forminhalt schicken und das PHP Script ließt es nachher mit "$nickname= addslashes($_POST['nickname']);" aus. Ich bekomms einfach nicht hin!

Vielen Dank

VB 6 Code:
Visual Basic:
Option Explicit

'##################################### Linkstring zusammenfügen
Public Sub PostRequest(URL, Names, Values, Server)
  Dim I, FormData, Name, Value
  
  For I = 0 To UBound(Names) - 1
    Name = URLEncode(Names(I))
    Value = URLEncode(Values(I))
    If FormData <> "" Then FormData = FormData & "&"
    FormData = FormData & Name & "=" & Value
  Next
  
  If Server = 1 Then
    ServerPostStringRequest URL, FormData
  Else
    IEPostStringRequest URL, FormData
  End If
End Sub

'##################################### Server aufrufen
Public Sub ServerPostStringRequest(URL, FormData)
  Dim bFormData() As Byte
  ReDim bFormData(Len(FormData) - 1)
  bFormData = StrConv(FormData, vbFromUnicode)
  frmMain.WebBrowserServer.Navigate URL, 2 + 4 + 8, , bFormData, "Content-type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)

  Do While frmMain.WebBrowserServer.Busy
    DoEvents
  Loop
End Sub

'##################################### Daten aufrufen
Public Sub IEPostStringRequest(URL, FormData)
  Dim bFormData() As Byte
  ReDim bFormData(Len(FormData) - 1)
  bFormData = StrConv(FormData, vbFromUnicode)
  frmMain.WebBrowserDaten.Navigate URL, 2 + 4 + 8, , bFormData, "Content-type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)

  Do While frmMain.WebBrowserDaten.Busy
    DoEvents
  Loop
End Sub

'##################################### URL encodieren
Public Function URLEncode(Data)
  Dim I, C, Out
  
  For I = 1 To Len(Data)
    C = Asc(Mid(Data, I, 1))
    If C = 32 Then
      Out = Out + "+"
    ElseIf C < 48 Then
      Out = Out + "%" + Hex(C)
    Else
      Out = Out + Mid(Data, I, 1)
    End If
  Next
  URLEncode = Out
End Function
 
Nabend!

Folgendes: Ich habe einen String "typ=0" also einen LEN von 5! In den unteren Zeilen sagt er mir es ist 10 lang. Und macht mir nach jedem Buchstabe noch einen Byte "0". Zu sehen im Bild:

Bild:
http://www.pic-upload.de/14.08.08/gyeha.gif

Wieso? Was mache ich falsch? Eigendlich sollte er nur 5 Bytes übergeben!?

DANKE

Code:
Visual Basic:
Public Sub ServerPostStringRequest(ByVal URL As Uri, ByVal FormData As String)
        Dim [Unicode] As Encoding = Encoding.Unicode
        Dim unicodeBytes As Byte() = [Unicode].GetBytes(FormData)

        frmMain.WebBrowserServer.Navigate(URL, "", unicodeBytes, "Content-type: application/x-www-form-urlencoded" + Chr(10) + Chr(13))

        Do While frmMain.WebBrowserServer.IsBusy
            System.Windows.Forms.Application.DoEvents()
        Loop
    End Sub
 
Hi
Nabend!
[...]
Wieso? Was mache ich falsch? Eigendlich sollte er nur 5 Bytes übergeben!?
Du macht nichts falsch.
Unicode besteht im Gegensatz zu ANSI-Code aus 2 Bytes. Da du an der Stelle keine Zeichen aus anderen Sprachen nutzt, ist das 2. Byte jeweils 0, da nicht benötigt.
Es sollte für die Adresse jedoch auch genügen, wenn du als Kodierung die Default-Kodierung nutzt.
 
Zurück