C# - Proxy verwenden?

10/07/2011 16:15 StridingGiant#1
Hallo,
mein Programm soll eine bestimmte Internetseite aufrufen, dafür aber Proxys verwenden.

Wenn man googlet, stößt man immer wieder auf diesen Codeschnipsel:

Code:
WebProxy proxyObject = new WebProxy("http://proxyserver:port/",true);
WebRequest req = WebRequest.Create("http://www.domain.de");
req.Proxy = proxyObject;
Allerdings erziehlt das nicht den gewünschten Effekt. Umdas nachvollziehen zu können, habe ich eine Test-Homepage erstellt auf der ein Counter ist, dieser sollte pro Websitebesuch um 1 steigen.
So funktioniert er auch aber über diese Funktion nicht, also scheint es am Code zu liegen.

Wie setze ich das denn jetzt in C# um, dass das Programm per Proxy auf eine bestimmte Website zugreift?

Danke!
10/07/2011 17:22 Devil589#2
Es liegt daran dass du Request nutzt, desshalb müsstest du dir noch die Response holen damit der Count gezählt wird.

Aber wenn du nur einen simplen connect brauchst, kannst du auch den WebClient nutzen.

Denn der WebClient bietet auch eine Proxy Eigenschaft.

See Ya!
10/07/2011 17:29 StridingGiant#3
Quote:
Originally Posted by Devil589 View Post
Es liegt daran dass du Request nutzt, desshalb müsstest du dir noch die Response holen damit der Count gezählt wird.

Aber wenn du nur einen simplen connect brauchst, kannst du auch den WebClient nutzen.

Denn der WebClient bietet auch eine Proxy Eigenschaft.

See Ya!
Hättest du dafür vielleicht ein Codebeispiel? :)
10/07/2011 17:49 Devil589#4
Da ich jetzt nicht mehr genau aus dem FF weiß wie es aussehen muss mit dem WebClient habe ich dir hier ein kleines Beispiel gemacht wo HttpWebRequest genutzt wird.

Code:
CookieContainer cookiecon = new CookieContainer();

HttpWebRequest Webrequest = (HttpWebRequest)HttpWebRequest.Create("ZIEL URL");

Webrequest.CookieContainer = cookiecon;
Webrequest.Method = "GET";
Webrequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.5(.NET CLR 4.0.20506)";

Webrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

Webrequest.KeepAlive = true;
Webrequest.Timeout = 10000;
Webrequest.Referer = "KANN MAN ANGEBEN, MUSS MAN ABER NICHT";
[B]Webrequest.Proxy = "HIER DEIN PROXY (Source aus deinem ersten Post)";[/B]
Webrequest.ContentType = "application/x-www-form-urlencoded";

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] dataBytes = encoding.GetBytes(postDatas);
Webrequest.ContentLength = dataBytes.Length;

Stream stream = Webrequest.GetRequestStream();
stream.Write(dataBytes, 0, dataBytes.Length);
stream.Close();

HttpWebResponse Webresponse = (HttpWebResponse)Webrequest.GetResponse();

StreamReader streamReader = new StreamReader(Webresponse.GetResponseStream());

string websiteContent = streamReader.ReadToEnd();
streamReader.Close();
Webresponse.Close();
Du musst nun nur noch die von mir fett makierten Stellen bearbeiten.

EDIT:
Das oben gezeigte wäre ein kompletter Request.
Man kann es aber im grunde auch stark verkürzen.

Code:
string HTML = "";

WebRequest webRequest = WebRequest.Create("ZIEL URL");
webRequest.Proxy = "HIER DEIN PROXY";
WebResponse webResponse = webRequest.GetResponse();

Stream stream = webResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(stream);

HTML = streamReader.ReadToEnd(); //Variable HTML enthält dann den Sourcecode (Response) der angeforderten Seite
Dies sollte im Grunde genauso funktionieren.

See Ya!