Ergebnis 1 bis 17 von 17
  1. #1
    treu Avatar von darkloader
    Registriert seit
    Jun 2006
    Beiträge
    1.772

    Standard vb.net POST und GET

    Okay, also wenn man z.B. bei Pastebin einen text einträgt und dabei die Aktionen mitschneidet, erhält man folgendes:

    POST http://pastebin.com/pastebin.php parent_pid=&format=text&code2=%0D%0AThis+is+only+a+Test%2C+Test%21&poster=H ardcoreHoly&paste=Send&expiry=f&email=")
    Nun, eigentlich einleuchtend und nicht sehr schwer, in curl z.B. hab ich das schon ganz leicht nachgebaut, aber wie macht man das in .NET ?

    Meine Anlaufstelle:

    Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://pastebin.com/pastebin.php parent_pid=&format=text&code2=%0D%0AThis+is+only+a+Test%2C+Test%21&poster=H ardcoreHoly&paste=Send&expiry=f&email=")
    request.ContentLength
    request.Method = "POST"
    Dim answer As System.Net.HttpWebResponse = request.GetResponse
    Nun scheint es deshalb nicht zu gehen, da dass parent_pid=&format=text&code2=%0D%0AThis+is+only+a+Test%2C+Test%21&poster=H ardcoreHoly&paste=Send&expiry=f&email= ja als direkter POST-Parameter an http://pastebin.com/pastebin.php übergeben werden muss, denke ich ? Wie kann ich dass dann machen und könnt ihr mir dazu vllt. noch erklären, wie es anschleißend möglich ist, das Ergebnis (der Link zu dem eingetragenen text) zu finden und auszugeben ?

  2. #2
    HelloWorld
    Gast

    Standard Re: vb.net POST und GET

    Die Antwort auf Deine Frage findet sich in der Klassendokumentation.
    http://msdn2.microsoft.com/en-us/lib...st(VS.71).aspx
    Mit der GetRequestStream-Methode solltest Du einen Stream bekommen, wo Du die POST-Daten reinschreiben kannst.

  3. #3
    treu

    (Threadstarter)

    Avatar von darkloader
    Registriert seit
    Jun 2006
    Beiträge
    1.772

    Standard Re: vb.net POST und GET

    Danke erstmal, HelloWorld, habe mir den Artikel in der MSDN durchgelesen, allerdings hab ich irgendwie noch nicht so ganz den Durchblick....Ist wohl auch nicht so gut, ohne Vorwissen in dem Gebiet irgendetwas zu probieren, aber ich habe leider kein gutes Tutorial darüber gefunden......

    Wie kann ich denn bei diesem Codebeispiel jetzt meine POST-Daten anhängen ?

    Spoiler: 



    ' Set the 'ContentType' property of the WebRequest.
    myWebRequest.ContentType = "application/x-www-form-urlencoded"

    ' Set the 'ContentLength' property of the WebRequest.
    myWebRequest.ContentLength = byteArray.Length
    Dim newStream As Stream = myWebRequest.GetRequestStream()
    newStream.Write(byteArray, 0, byteArray.Length)

    ' Close the Stream object.
    newStream.Close()

    ' Assign the response object of 'WebRequest' to a 'WebResponse' variable.
    Dim myWebResponse As WebResponse = myWebRequest.GetResponse()


    P.S. Wenn wer vllt. noch ein gutes Einstiegsbuch/Tutorial in das Thema kennt, wäre ich ihm sehr verbunden, würde das Buch sogar kaufen, was hier auf dem G:B ja eine
    Minderheit täte

  4. #4
    And who are you... Avatar von mo_scanner
    Registriert seit
    Apr 2006
    Ort
    C:\
    Beiträge
    421

    Standard Re: vb.net POST und GET

    Code:
    request.method = "POST"
    das ist die eigenschaft, dass es ein post befehl ist.
    die postparameter schreibst du einfach in den requeststream
    Code:
    dim writer as streamwriter = new streamwriter(request.getrequeststream)
    writer.write(postparameters)
    writer.close
    soße drübba, ferdisch

  5. #5
    HelloWorld
    Gast

    Standard Re: vb.net POST und GET

    Ich kann kaum Visual Basic, aber das hier:
    Code:
    dim writer as streamwriter = new streamwriter(request.getrequeststream)
    ist doch ein Aufruf des Kopierkonstruktors. Wozu soll das gut sein? Also wieso nicht einfach
    Code:
    dim writer as streamwriter = request.getrequeststream

  6. #6
    treu

    (Threadstarter)

    Avatar von darkloader
    Registriert seit
    Jun 2006
    Beiträge
    1.772

    Standard Re: vb.net POST und GET

    So, vielen Dank erstmal für eure Antworten . Ging auch relativ zügig.

    Habe mich nun rangesetzt und was gebastelt, um das Empfangene nach dem "POST" auch lesbar machen zu können.Ich habe es hinbekommen, aber leider ist es etwas kompliziert und lang...könnte man das vllt. noch eindampfen?Ich will nur den POST-Befehl senden und den empfangenen Quellcode dann als text in einer Textbox ausgeben können.

    Hier der Code:

    Spoiler: 



    Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://www.testedich.de/search.php3")

    request.Method = "POST"

    Dim writer As IO.StreamWriter = New IO.StreamWriter(request.GetRequestStream)
    writer.Write("search=tsten")
    writer.close()

    Dim myWebResponse As Net.HttpWebResponse = request.GetResponse()

    Dim ReceiveStream As IO.Stream = myWebResponse.GetResponseStream()

    Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")

    Dim readStream As New IO.StreamReader(ReceiveStream, encode)

    Dim read(256) As [Char]

    Dim count As Integer = readStream.Read(read, 0, 256)

    While count > 0

    ' Dump the 256 characters on a string and display the string onto the console.
    Dim str As New [String](read, 0, count)

    TextBox1.Text &= str

    count = readStream.Read(read, 0, 256)
    End While

    readStream.Close()

    ' Release the resources of response object.
    myWebResponse.Close()



    P.S. ich verstehe ehrlich gesagt die while-Schleife nicht ganz, diese hier:

    Dim count As Integer = readStream.Read(read, 0, 256)

    While count > 0

    Dim str As New [String](read, 0, count)
    Console.Write(str)
    count = readStream.Read(read, 0, 256)

    End While
    Wieso geht die Schleife, während die Variable "count" größer als 0 ist ?.Und Wieso wird sie davor so definiert :
    readStream.Read(read, 0, 256)
    . Und dann wird ja in der Schleife count erneut genauso definiert, wie es oben schon passiert ist....
    Entschuldigung für die vielen Fragen, aber was bringt mir ein Code, den ich nicht verstehe ?!

  7. #7
    And who are you... Avatar von mo_scanner
    Registriert seit
    Apr 2006
    Ort
    C:\
    Beiträge
    421

    Standard Re: vb.net POST und GET

    so wich das sehe hast du da irgend ein code schnippsel aufgeschnappt für einen unnötig langen streamreader
    hier mein vorschlag
    Code:
    'request geschichte getan
    dim response as httpwebresponse = request.getresponse
    dim reader as streamreader = new streamreader(response.getresponsestream)
    textbox1.text = reader.readtoend
    reader.close
    reponse.close

  8. #8
    HelloWorld
    Gast

    Standard Re: vb.net POST und GET

    Liest hier eigentlich irgendjemand noch die Postings? Wozu der Schwachsinn mit dem neuen Streamreader? Wieso nicht einfach den nehmen, der von GetRequestStream() geliefert wird?

  9. #9
    C# Anwendungsentwickler Avatar von Spiek
    Registriert seit
    Jun 2006
    Beiträge
    106

    Standard Re: vb.net POST und GET

    Machs doch einfach mit nem Socket.....

    pack die Daten in ein byte array
    erstell nen Listening Thread...
    sende die Daten über den Socket
    warte auf antwort

    fertig

    ganz einfach und logisch...

    Mfg Spiek

  10. #10
    HelloWorld
    Gast

    Standard Re: vb.net POST und GET

    Zitat Zitat von Spiek
    Machs doch einfach mit nem Socket.....

    pack die Daten in ein byte array
    erstell nen Listening Thread...
    sende die Daten über den Socket
    warte auf antwort

    fertig

    ganz einfach und logisch...

    Mfg Spiek
    Es ist ja nicht schlimm, dass Du keine Ahnung hast. Aber musst Du das gleich so in die Welt hinaustragen?

  11. #11
    treu

    (Threadstarter)

    Avatar von darkloader
    Registriert seit
    Jun 2006
    Beiträge
    1.772

    Standard Re: vb.net POST und GET

    @mo_scanner: Danke , hab mir schon gedacht, dass da irgendetwas zu lang und umständlich war .......:

    Also, Helloworld, ist die Methode von mo_scanner die praktikabelste oder was stört dich an Spiek´s Aussage.Entschuldigung, dass ich so dumm frage, hab noch nichts mit Sockets o.ä. gemacht und der Artikel bei Wikipedia enthüllt mir ehrlich gesagt auch nicht so viel (aber ich informiere mich grundsätzlich immer erst vorher über ein Thema, bevor ich mitrede!Das sollte eigentlich selbstverständlich sein....).

  12. #12
    HelloWorld
    Gast

    Standard Re: vb.net POST und GET

    Das HTTP-Protokoll ist in einem RFC festgelegt, und wenn man mal schnell zwischendurch über Sockets etwas zusammenfrickelt, dann ist das mit ziemlicher Sicherheit _nicht_ konform zu diesem RFC. Deswegen liefert Microsoft ja auch eine Implementierung des Protokolls mit aus, und die sollte man nutzen. Die Wiederverwendung vorhandenen Codes ist wahrscheinlich eines der wichtigsten Prinzipien in der Programmierung überhaupt, und Spiek hat das ohne jeden guten Grund verletzt.

  13. #13
    treu

    (Threadstarter)

    Avatar von darkloader
    Registriert seit
    Jun 2006
    Beiträge
    1.772

    Standard Re: vb.net POST und GET

    Ok, Danke für die Erläuterungen.

    Wenn ich jetzt aber einen GET request statt dem POST-request verwende, kommt immer die Meldung "Inhaltsteil mit diesem Verbtyp kann nicht gesendet werden."

    Also hab ich mir übrlegt, wie man den GET sonst verschicken könnte und da es am Streamwriter gelegen habe müsste, habe ich dann folgenden Code verwendet:

    Spoiler: 



    Dim request2 As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://oxygen-warez.com/?q=testen")
    request2.Method = "GET"



    Dim response2 As Net.HttpWebResponse = request2.GetResponse
    Dim reader2 As IO.StreamReader = New IO.StreamReader(response2.GetResponseStream)

    TextBox1.Text = reader2.ReadToEnd
    reader2.Close()
    response2.Close()


    Funktioniert tadellos, allerdings möchte ich eigentlich lieber wie bei dem POST Befehl meinen zusätzlichen Get-Befehl (oder wie nennt man das "/?q=testen", dass eigentlich zu dem Link "http://oxygen-warez.com" gesendet werden müsste?) direkt übergeben per Streamwriter o.ä. Ist das möglich und habe ich es nur falsch angegeben ?

  14. #14
    And who are you... Avatar von mo_scanner
    Registriert seit
    Apr 2006
    Ort
    C:\
    Beiträge
    421

    Standard Re: vb.net POST und GET

    ich bin mir grade nicht sicher, was dein problem ist, aber ich versuche mal ein bisschen zu erläutern.

    post und get unterscheiden sich grundsätzlich in der art, wie informationen, sprich formulardaten übergeben werden. bei get ist es denkbar einfach: der name des formulars+wert werden an die url angehängt, beispielsweise ?p=news oder oder.

    der unterschied bei post ist, dass die daten nicht an die url angehängt werden, sondern im request mitgesendet werden, für den ottonormalbrowserbenutzer nicht sichtbar, allerdings leicht mit sniffern o. ä. rauszufinden. diese informationen müssen im code in den requeststream geschrieben werden.

    ich hoffe, das erklärt deine frage

  15. #15
    treu

    (Threadstarter)

    Avatar von darkloader
    Registriert seit
    Jun 2006
    Beiträge
    1.772

    Standard Re: vb.net POST und GET

    Okay, danke, das hat einiges geklärt

    Sorry, dass ich erst so verspätet darauf reagiere, muss mal meine Bookmarks hier ausmüllen.....

  16. #16
    Mitglied Avatar von HyP3r92
    Registriert seit
    Feb 2007
    Beiträge
    1.079

    Standard Re: vb.net POST und GET

    das Problem ist zwar gelöst aber ich poste mal meinen Request (mit dem hab ich alle Linkverschlüsselungsseiten DeCrypthet und seit neuen auch Rapidsafe :P)


    Code:
            Dim req As Net.HttpWebRequest
            Dim resp As Net.HttpWebResponse
            Dim str, str2 As IO.Stream
            Dim cookies As Net.CookieContainer
            Dim buffer As String
    
            Dim data As Byte() = System.Text.Encoding.ASCII.GetBytes(*postdata*) 'das sind die Post Informationen in Get werden sie über den URL mitgeliefert :T 
    
            req = Net.WebRequest.Create(url)
            req.CookieContainer = cookies 'fürd cookies fallsch noch eine hast
            req.Method = "POST"
            req.Accept = "*/*"
    
            'Das hier alles ist so gesehn unwichtig aber egal :)
    
            req.Headers.Add(Net.HttpRequestHeader.AcceptLanguage, "de")
            req.Headers.Add("UA-CPU", "x86")
            req.Headers.Add(Net.HttpRequestHeader.AcceptEncoding, "gzip, deflate")
    
            'Fürn Post Request den ContentType & Lenght + Data
    
            req.ContentType = "application/x-www-form-urlencoded"
            req.ContentLength = data.Length
    
            str2 = req.GetRequestStream()
            str2.Write(data, 0, data.Length)
            str2.Close()
    
            resp = req.GetResponse
            str = resp.GetResponseStream()
    
            If (resp.ContentEncoding.ToLower().Contains("gzip")) Then
                str = New IO.Compression.GZipStream(str, IO.Compression.CompressionMode.Decompress)
            ElseIf (resp.ContentEncoding.ToLower().Contains("deflate")) Then
                str = New IO.Compression.DeflateStream(str, IO.Compression.CompressionMode.Decompress)
            End If 'Fall der Server die Page in GZIP / Deflate zurück gibt dann habt hier einen Decoder 
    
            buffer = New IO.StreamReader(str, System.Text.Encoding.ASCII).ReadToEnd 'das ist die auslese sie ist (!) nicht geeignet wenn ihr einen Request an ein Bild/SWF ö.ä. macht da es durch das ASCII sonst zerstört wird
    ist halt alles in einem sonst aber kein unterschied

    mfg
    HyP3r

  17. #17
    Mitglied
    Registriert seit
    Apr 2011
    Beiträge
    1

    Standard Re: vb.net POST und GET

    auch wenn des Thema schon ewig alt ist und gerade durch zufall draufgestoßen bin wollte ich einfach mal eine function von mir posten die daten an eine webseite posten kann und die antwort darauf zurückgibt...

    Imports System.Net

    Public Function httpDataPost(ByVal url As String, ByVal Poststring As String) As String
    Dim byteArray As Byte() = System.Text.UTF8Encoding.UTF8.GetBytes(Poststring)
    Dim myWebRequest As HttpWebRequest

    myWebRequest = CType(HttpWebRequest.Create(url), HttpWebRequest)
    myWebRequest.CookieContainer = proginfo.cookie
    myWebRequest.Method = WebRequestMethods.Http.Post
    ' Set the 'ContentType' property of the WebRequest.
    myWebRequest.ContentType = "application/x-www-form-urlencoded"

    ' Set the 'ContentLength' property of the WebRequest.
    myWebRequest.ContentLength = byteArray.Length
    Dim newStream As Stream = myWebRequest.GetRequestStream()
    newStream.Write(byteArray, 0, byteArray.Length)
    ' Close the Stream object.
    newStream.Close()

    ' Assign the response object of 'WebRequest' to a 'WebResponse' variable.
    Dim myWebResponse As WebResponse = myWebRequest.GetResponse()
    Dim stre As New StreamReader(myWebResponse.GetResponseStream())
    Return stre.ReadToEnd()
    End Function

  18.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •