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. Zitieren
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 Zitieren
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. Zitieren
Thelvan Geschrieben 14. April 2011 Autor Geschrieben 14. April 2011 Super danke, Credentials am Proxy setzen hat mit deinem Code funktioniert! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.