Avatar billede Slettet bruger
16. januar 2010 - 19:44 Der er 25 kommentarer og
1 løsning

HttpWebRequest ændre uri'en

Jeg har lavet et system, der skal kunne hente nogle bruger informationer fra en hjemmeside. Hjemmesiden fungere sådan at at urlen er www.xxxxx.dk/xx/brugernavn og det kan mit program godt finde ud af. Men når brugernavnet slutter med et . (f.eks: www.xxxxx.dk/xx/.:Brugernavn:.) så fjerner programmet automatisk det sidste . fordi den tror det er pga. manglende filendelse, og det gør at programmet henter informationer om .:Brugernavn: istedet for .:brugernavn:.

Håber at der er nogen derude der kan hjælpe med at fixe det problem...

Min kode/function:

private string read(string get)
        {
            try
            {
                string url = get;
                Uri fileUrl = new Uri(url);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileUrl);
                MessageBox.Show(request.RequestUri.ToString());
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream receiveStream = response.GetResponseStream();
                Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
                StreamReader reader = new StreamReader(receiveStream, encode);
                return reader.ReadToEnd();
            }
            catch
            {
                return "Fejl";
            }

        }

Mvh Niclas
Avatar billede Syska Mester
16. januar 2010 - 20:41 #1
Hej,

hmmm, problemet er jo reelt nok ... og jeg kan godt forstå det.

Dem som ejer hjemmeside må have en speciel opsætning siden de tillader det ...

Må man spørge om hvad hjemmesiden er eller er det hemmeligt ?

Ved ikke om: WebRequest intern bruger URI klassen men du kunne jo prøve med:
WebRequest.Create("url");
Avatar billede Slettet bruger
16. januar 2010 - 21:22 #2
Urlen er: http://habbo.dk/home/Brugernavn

Og det overstående hjalp ikke. (WebRequest.Create("url");)
Mit program henter source koden og finder automatisk online status fra brugeren etc...
Avatar billede bvli Praktikant
17. januar 2010 - 21:11 #3
string uri = "http://habbo.dk/home/" + HttpUtility.UrlEncode(brugerNavn);
string result = read(uri);

.. måske?
Avatar billede Slettet bruger
17. januar 2010 - 21:19 #4
Har jeg prøvet, men UrlEncode encoder ikke ., desværre!
Avatar billede bvli Praktikant
17. januar 2010 - 21:32 #5
Pudsigt - for det virker fortrinligt her..

Men jeg ser nu, at den kun encoder kolonet og ikke punktummet. På den anden side, så virker det altså fint her - mit sidste punktum bliver ikke knappet.
Avatar billede Slettet bruger
17. januar 2010 - 21:50 #6
Jeg prøver lige igen...
Avatar billede Slettet bruger
17. januar 2010 - 21:54 #7
Den mangler stadigvæk... Prøv at send dit script, så kan jeg se om det virker ved mig. ^_^
Avatar billede bvli Praktikant
17. januar 2010 - 22:46 #8
using System;
using System.Net;
using System.Web;
using System.IO;
using System.Text;

namespace B.Testing {

    class Tester {

        static void Main(string[] args) {   
            string brugerNavn = ".:BrugerNavn:.";
            string uri = "http://habbo.dk/home/" + HttpUtility.UrlEncode(brugerNavn);
            Console.WriteLine(uri);
//            Console.WriteLine(read(uri));
        }
}
}
Avatar billede Slettet bruger
17. januar 2010 - 22:50 #9
Det kan evt. være fordi at problemet er i HttpWebRequest(Det er den der fjerner .) og er i en Form.
Avatar billede bvli Praktikant
18. januar 2010 - 09:28 #10
Det er dælme sjovt!

Hvis man kører dette:
using System;
using System.Net;

namespace B.Testing {
    class Tester {
        static void Main(string[] args) {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://habbo.dk/home/.:Brugernavn:.");
            Console.WriteLine(request.Address);
           
        }
    }
}

Så er outputtet:
http://habbo.dk/home/.:Brugernavn:
i .NET men
http://habbo.dk/home/.:Brugernavn:.
i mono.

Den testcase jeg lavede i går som fungerede lavede jeg i linux, så ikke noget at sige til, at jeg kunne få det til at fungere.
Avatar billede bvli Praktikant
18. januar 2010 - 09:39 #11
Men det er en bug i .NET framework'et:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/5206beca-071f-485d-a2bd-657d635239c9/

Den barberer det i øvrigt af, selv om man også encoder punktummet manuelt.
Avatar billede Slettet bruger
18. januar 2010 - 18:20 #12
Hvad kan man så gøre?
Avatar billede bvli Praktikant
19. januar 2010 - 10:03 #13
Den lette version: Brug Mono.

Den svære version:
Implementér en custom uri parser. (Google Implement custom uri parser)

Det er godt nok en totalt tåbelig bug - ufatteligt at den har fået lov at hænge rundt så længe. Du er vist ikke den eneste der har haft problemet.
Avatar billede Syska Mester
19. januar 2010 - 18:44 #14
ahhh, den lette er vist ikke at bruge Mono ... jeg ville smide begge under svære ...

Måske noget IronPython ...

mvh
Avatar billede Syska Mester
19. januar 2010 - 18:44 #15
har den indbyggede browser i .NET så samme problem ?

Ellers kunne den jo bruges.
Avatar billede Slettet bruger
19. januar 2010 - 21:56 #16
Ja, den må jeg lige prøve imorgen :)
Avatar billede Slettet bruger
20. januar 2010 - 15:54 #17
Jeg ved ikke om det virker, da jeg ikke har nogen anelse om hvordan man skal hente source koden via webbrowser.. Men tror ikke den har samme problem, altså tror det virker.. :)
Avatar billede Syska Mester
20. januar 2010 - 18:19 #18
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documenttext.aspx

Efete du har navigeret derhen ... så kan du hente source med:
DocumentText

Så det var i hvert fald en mulighed.
Avatar billede bvli Praktikant
21. januar 2010 - 13:38 #19
Det er bare dødssygt, at skulle have en iexplore i luften for at hente en åndssvag html-streng. :S

Jeg kunne forestille mig, at hvis man googler lidt ekstra omkring det - nok ville kunne finde en løsning med en custom uri parser.
Avatar billede Slettet bruger
23. januar 2010 - 00:40 #20
Ja, og jeg skal nok få det her testet, så snart så muligt. Har lidt travlt for tiden. Men har massere af tid Lørdag Eftermiddag ^^
Avatar billede Slettet bruger
23. januar 2010 - 00:55 #21
Browser løsningen lykkedes og gav et PERFEKT resultat ;)
Avatar billede Syska Mester
23. januar 2010 - 01:07 #22
Nu er VS 2010 jo på trapperne ... måske man skulle prøve deres BETA2 og se om det er rettet der :-)

// ouT
Avatar billede Syska Mester
23. januar 2010 - 01:17 #23
Virker heller ikke i VS 2010 Beta 2

og svar.
Avatar billede Slettet bruger
23. januar 2010 - 12:01 #24
Og først nu har jeg opdaget at jeg brugte Mono.Net da jeg testede det, det vil jo så sige at det stadig ikke virker i VS - Men i det mindste virker det i Mono
Avatar billede Syska Mester
23. januar 2010 - 17:59 #25
Hvordan kan du "komme til" at teste det i Mono? eller bare mig der er lidt forvirret.

// ouT
Avatar billede Slettet bruger
24. januar 2010 - 22:01 #26
Jeg var bare træt.. ^_^
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