Veröffentlicht 14. April 201114 j 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.
14. April 201114 j 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
14. April 201114 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.