HttpWebRequest.GetRequestStream() 503 Problem

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von chillibang.

    HttpWebRequest.GetRequestStream() 503 Problem

    Hallo liebe Community,

    könnt ihr mir bitte bei folgendem Problem helfen? Könnte mir drei Ursachen vorstellen, wieso das Skript nicht funktioniert.

    1. SSL muss im Skript aktiviert werden
    2. Proxyeinstellungen stimmen nicht
    3. Weiterleitungsproblem

    Zum Ablauf: Versuche mich auf eine Seite zu connecten, welche mit Weiterleitungen arbeitet. (HTTP Code 301) Bei einem Forum-Login mit HTTP Code 200 hat alles super funktioniert. Es könnte jedoch auch am Proxy liegen, da ich aktuell auf Arbeit das Skript entwickel. Leider habe ich gerade keine Möglichkeit dies zu testen. Der andere Unterschied zum Forum-Login ist SSL, muss ich das explizit aktivieren?

    VB.NET-Quellcode

    1. Dim postData As String = "redirectUrl=www.url.com&failureUrl=www.url.com&captchaFailureUrl=www.url.com&email=email%40gmx.de&password=password&stay-signed=ON"
    2. Dim tempCookies As New CookieContainer
    3. Dim encoding As New UTF8Encoding
    4. Dim byteData As Byte() = encoding.GetBytes(postData)
    5. Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create("https://www.url.com"), HttpWebRequest)
    6. postReq.Method = "POST"
    7. postReq.KeepAlive = True
    8. postReq.AllowAutoRedirect = True
    9. postReq.CookieContainer = tempCookies
    10. postReq.ContentType = "application/x-www-form-urlencoded"
    11. postReq.Referer = "www.url.com?redirectUrl=www.url.com"
    12. postReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0"
    13. postReq.ContentLength = byteData.Length
    14. Dim postreqstream As Stream = postReq.GetRequestStream()


    Folgende Fehlermeldung erscheint bei der untersten Code-Zeile:

    Eine nicht behandelte Ausnahme des Typs "System.Net.WebException" ist in System.dll aufgetreten.

    Zusätzliche Informationen: Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig.


    Vielen Dank für eure Mühen! :)

    Luki-Progger schrieb:

    Willkommen im Forum ;)
    Versuch mal:

    VB.NET-Quellcode

    1. Dim postresponse As Stream = postReq.GetResponse()
    2. Dim postreqstream As Stream = postresponse.GetRequestStream()


    Vielen Dank für die nette Begrüßung!

    Bei "Dim postresponse As Stream = postReq.GetResponse()" kommt die Fehlermeldung "Der Wert vom Typ "System.Net.Response" kann nicht in "System.IO.Stream" konvertiert werden".

    VB.NET-Quellcode

    1. Dim postresponse As WebResponse = postReq.GetResponse()


    Funktioniert jetzt, jedoch tritt jetzt ein Fehler bei dem 2. Teil auf.

    VB.NET-Quellcode

    1. Dim postreqstream As Stream = postresponse.GetRequestStream()

    "GetRequestStream" ist kein Member von "System.Net.WebResponse"

    Sorry, falls das Dinge sind, die eigentlich klar sind. Bin ein Anfänger in VB. :)
    Jetzt kommen wir dem Problem glaube ich näher!

    VB wirft nun beim Button_Click folgende Exception:
    Eine nicht behandelte Ausnahme des Typs "System.Net.ProtocolViolationException" ist in System.dll aufgetreten.

    Zusätzliche Informationen: Sie müssen einen Anforderungstext bereitstellen, wenn Sie ContentLength>0 oder SendChunked==true festlegen. Rufen Sie hierzu [Begin]GetRequestStream vor [Begin]GetResponse auf.
    Der Code dahinter wurde von mir vorerst auskommentiert.

    VB.NET-Quellcode

    1. 'postreqstream.Write(byteData, 0, byteData.Length)
    2. 'Dim postresponse As HttpWebResponse
    3. 'postresponse = DirectCast(postReq.GetResponse(), HttpWebResponse)
    4. 'tempCookies.Add(postresponse.Cookies)
    5. 'logincookie = tempCookies
    6. 'Dim postreqreader As New StreamReader(postresponse.GetResponseStream())
    7. 'Dim thepage As String = postreqreader.ReadToEnd
    8. 'If thepage.Contains("Eingeloggt") Then
    9. 'Label1.Text = "Erfolgreich eingeloggt!"
    10. 'ElseIf thepage.Contains("Falsche Kombination") Then
    11. 'Label1.Text = "Nicht eingeloggt."
    12. 'Else
    13. 'Label1.Text = CStr(DateTime.Now) & " - Unbekannter Fehler!"
    14. 'End If