Thelvan Geschrieben 14. April 2011 Geschrieben 14. April 2011 Hallo, ich beschäftige mich gerade das erste mal mit der HttpWebRequest Klasse. Ich versuche eine einfache WebResponse zu bekommen. Zuhause hat das einwandfrei funktioniert, allerdings habe ich auf der Arbeit das Problem, dass ich hinter einem Proxy sitze. Mein Code sieht bisher so aus: string uri = "http://www.google.de"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); req.UseDefaultCredentials = true; req.Proxy = WebRequest.DefaultWebProxy; HttpWebResponse response = (HttpWebResponse)req.GetResponse(); Bei DefaultWebProxy bzw. UseDefaultCredentials nimmt er ja die vom IE richtig? Dort ist der Proxy eingetragen und kann dort ganz normal surfen. Beim debuggen bekomme ich immer die Fehlermeldung: Der Remoteserver hat einen Fehler zurückgegeben: (407) Proxyauthentifizierung erforderlich.
Fraggla Geschrieben 14. April 2011 Geschrieben 14. April 2011 public static string Aufruf(string Paras) { try { string testhttp2 = "http://google.de"; // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(testhttp2); //RL-Proxy request.Proxy = new WebProxy("xxx.xxx.xxx.xxx:xxxx", true); request.Timeout = 100000; // Set the Method property of the request to POST. request.Method = "POST"; // Create POST data and convert it to a byte array. string postData = Paras; byte[] byteArray = Encoding.UTF8.GetBytes(postData); // Set the ContentType property of the WebRequest. // request.ContentType = "application/x-www-form-urlencoded"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); // Get the response. WebResponse response = request.GetResponse(); // Display the status. Console.WriteLine(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. Console.WriteLine(responseFromServer); // Clean up the streams. reader.Close(); dataStream.Close(); response.Close(); return responseFromServer; } catch (WebException e) { Console.WriteLine("{0} Exception caught.", e); // Console.WriteLine("Zeitueberschreitung der Anforderung!"); return "Fehler!"; } Funktioniert bei mir ohne Probleme
Guybrush Threepwood Geschrieben 14. April 2011 Geschrieben 14. April 2011 Du musst die Credentials am Proxy setzten. WebRequest request = WebRequest.Create(uri.ToString()); request.Proxy.Credentials = CredentialCache.DefaultCredentials; [/PHP] Das funktioniert so natürlich nur wenn auch im System (IE) ein Proxy eingetragen ist und die Anmeldung automatisch funktioniert, sonst musst du die Anmeldedaten natürlich selber setzten.
Thelvan Geschrieben 14. April 2011 Autor Geschrieben 14. April 2011 Super danke, Credentials am Proxy setzen hat mit deinem Code funktioniert!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden