Httpwebrequest (mit Ajax und JSON ?)

04/11/2013 21:14 Graphicscore#1
Hallo , Ich habe folgendes Problem auf der Seite [Only registered and activated users can see links. Click Here To Register...] gibt es die Funktion eine Datei(DLC) hochzuladen und die dort zu entschlüsseln, die Daten (Beim Upload von einer Datei) werden an [Only registered and activated users can see links. Click Here To Register...] geschickt per POST das weiß ich schon. Ich weiß auch das die Requests auf der Seite Ajax sind und JSON zurückgeben(Falls das jemandem hilft). Wie lade ich nun per POST befehl die Datei dort hoch und kann den Rückgabewert auslesen. Ich habe immoment absolut garkeine Ansätze habe und mich mit dem Tema Httpwebrequest noch nicht viel beschäftigt habe würde Ich mich auch über ein HttpWebRequest Tutorial freuen.
Bevorzugte Sprache Visual Basic.
Natürlich dürft ihr auch gerne Codesnippets posten ;)

Lg FeelingFree
04/11/2013 21:20 snow#2
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

^alles was du brauchst. Schau dir mit z.B. LiveHTTPHeaders an, wie der Request aufgebaut ist und bau den nach. Den Inputstream, den du als Response erhälst, kannst du dann weiterverarbeiten, dazu brauchst du dann halt ne Library oder so, siehe 2. Link.
04/11/2013 21:29 Graphicscore#3
Quote:
Originally Posted by snow911 View Post
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

^alles was du brauchst. Schau dir mit z.B. LiveHTTPHeaders an, wie der Request aufgebaut ist und bau den nach. Den Inputstream, den du als Response erhälst, kannst du dann weiterverarbeiten, dazu brauchst du dann halt ne Library oder so, siehe 2. Link.
Danke , werde ich mir mal anschauen.

//EDIT:
Ich habe es jetzt so versucht :
Code:
Function Decrypt(ByVal Path As String)


        '    Dim ret As String = wc.UploadFile("http://decrypt.it/decrypt", Path)

        Try
            Dim rdr As New FileStream(Path, FileMode.Open)
            Dim req As HttpWebRequest = DirectCast(WebRequest.Create(decryptURL), HttpWebRequest)
            req.Method = "POST"
            req.ContentLength = rdr.Length
            req.AllowWriteStreamBuffering = True
            Dim reqStream As Stream = req.GetRequestStream
            Dim inData As Byte() = New Byte(rdr.Length - 1) {}
            Dim bytesRead As Integer = rdr.Read(inData, 0, rdr.Length)
            reqStream.Write(inData, 0, rdr.Length)
            rdr.Close()
            req.GetResponse()
            reqStream.Close()
        Catch ex As Exception
            Return ex.ToString
        End Try

    End Function
Bekomme aber folgenden Fehler :
Code:
System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (405) Unzulässige Methode.
   bei System.Net.HttpWebRequest.GetResponse()
   bei gDownload.Form1.Decrypt(String Path) in C:\Users\Louven\documents\visual studio 2010\Projects\gDownload\gDownload\Form1.vb:Zeile 42.
Und wie bekomme ich dann die Response ?
04/11/2013 23:55 tolio#4
steht da doch, das das was du gesendet hast dem server nicht gefällt "(405) Unzulässige Methode."

wiki sagt dazu:
"405 Method Not Allowed
Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im „Allow“-Header-Feld der Antwort übermittelt."
04/12/2013 16:22 Graphicscore#5
Also hier noch mal die Informationen für die Request :

"Allow" Feld ? -

Code:
 Try
            Dim rdr As New FileStream(Path, FileMode.Open)
            Dim req As HttpWebRequest = DirectCast(WebRequest.Create(decryptURL), HttpWebRequest)
            req.Method = "POST"
            [I][U][B]req.Allow = ...   ?[/B][/U][/I]
            req.ContentLength = rdr.Length
            req.AllowWriteStreamBuffering = True
            Dim reqStream As Stream = req.GetRequestStream
            Dim inData As Byte() = New Byte(rdr.Length - 1) {}
            Dim bytesRead As Integer = rdr.Read(inData, 0, rdr.Length)
            reqStream.Write(inData, 0, rdr.Length)
            rdr.Close()
            req.GetResponse()
            reqStream.Close()
        Catch ex As Exception
            Return ex.ToString
        End Try
04/12/2013 16:57 tolio#6
ese geht um das allow antwort feld nicht request feld ;)
Quote:
„Allow“-Header-Feld der Antwort
ist anscheinend nen multipart request, den musst du haargenau umsetzten sonst kommte eben das oben raus.

Quote:
------WebKitFormBoundary9o8GAofn0SXw8m40
Content-Disposition: form-data; name="dlcfile"; filename="7203-bprjqimi5f5am.dlc"
Content-Type: application/octet-stream


------WebKitFormBoundary9o8GAofn0SXw8m40--

wie ein multipart request richtig zusammengebastelt wird steht hier: [Only registered and activated users can see links. Click Here To Register...]

in den rfc memos ist btw jedes gebräuchliche protokol detailiert notiert