Avatar billede Thomas_E Nybegynder
15. juni 2011 - 14:36 Der er 5 kommentarer og
1 løsning

Bruge proxy server sammen med HttpWebRequest

Hej Eksperter,

Jeg er stødt på en udfordring.

Den går ud på at jeg gerne vil kunne fortage HttpWebRequest kald via 10 eksterne proxy server, sådan så at det er disse porxy serveres ip'er at HttpWebRequest bliver send fra og ikke og ikke ip'en på den server hvor app. ligger. men så vidt jeg kan se så kan man ikke dette med  WebProxy class'en den understøttet så vidt jeg kan se kun at man kan til gå et given netværks proxy, så man har mulighed for at om gå en evt. firewall. Så mit spørgsmål er hvordan kan man fortage HttpWebRequest via forskellige proxy'er!

Håber at der er nogle der kan hjælpe!
Avatar billede Syska Mester
15. juni 2011 - 15:03 #1
Det er vel også hele ideen med en proxy. Det er jo kun en "man in the middle" som laver din kald for dig. Når du sætter din computer/app op til en bruge en proxy er det jo der kaldet til hjemmesiden eller hvad du nu kalder ser ud til at komme fra ... og det bliver så sendt tilbage til din app.

Den proxy class gør jo netop hvad den skal gøre, også i dit tilfælde.

De 2 scenarier du sætter op er 100% ens i min verden, ved ikke hvor du ser forskellen ...

mvh
Avatar billede Thomas_E Nybegynder
15. juni 2011 - 15:11 #2
Så er det måske bare mig der har misforstået det :)

men hvis jeg forstår dig ret så vil denne kode :

HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);

        WebProxy myProxy = new WebProxy();

        myProxy = (WebProxy)WebReq .Proxy;

        Uri newUri = new Uri("100.100.10.01");
   
        myProxy.Address = newUri;
     
        myProxy.Credentials = new NetworkCredential("demo", "test");
       


        WebReq .Method = "POST";
        WebReq .UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)";
        WebReq .AllowAutoRedirect = true;
        WebReq .MaximumAutomaticRedirections = 10;
        WebReq .ContentType = "application/x-www-form-urlencoded";

        WebReq .ContentLength = buffer.Length;
        Stream WebData = WebReq .GetRequestStream();
        WebData.Write(buffer, 0, buffer.Length);
       
        WebData.Close();


        CookieContainer myContainer = new CookieContainer();

        WebReq .CookieContainer = new CookieContainer();

        HttpWebResponse WebnResp = (HttpWebResponse)WebReq .GetResponse();

        foreach (Cookie cook in WebnResp.Cookies)
        {
            myContainer.Add(cook);
        }

        Stream WebAnswer = WebnResp .GetResponseStream();
        StreamReader _Answer = new StreamReader(WebAnswer );
        TheReturn = _Answer.ReadToEnd();

      return TheReturn;


Sende Ip'en fra proxy serveren og ikke ip'en fra app. serveren
Avatar billede Syska Mester
15. juni 2011 - 16:39 #3
Præcis.

Se de 3 billeder på http://en.wikipedia.org/wiki/Proxy_server

De 2 øverste er hvad du har forklaret i din første post.

( Reverse proxy er ikke relevant her )

Om din proxy er public eller private har ikke noget at sige, kun hvem der kan access den.

Din httpWebRequest sender dit request videre til din proxy, som så sprøger den webserver efter informatonen ... og så sender det tilbage igen.
Avatar billede Thomas_E Nybegynder
16. juni 2011 - 15:30 #4
ok har fået det til at virke smid et svar!
Avatar billede Syska Mester
16. juni 2011 - 16:29 #5
Men virkede det ikke som du havde lavet det?

Så det mere var et spørgsmål, om du havde misforstået konceptet med en Proxy ?
Avatar billede Syska Mester
16. juni 2011 - 16:29 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester