Avatar billede sholm Nybegynder
22. februar 2008 - 09:15 Der er 21 kommentarer og
1 løsning

Webrequest og dansketegn

Hej

Jeg har denne funktion:

private string getUrl(string strUrl)
{
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
  request.Timeout = 5000;
  request.KeepAlive = false;
  WebResponse response = request.GetResponse();

  Stream ReceiveStream = response.GetResponseStream();

  System.Text.Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

  StreamReader readStream = new StreamReader(ReceiveStream, encode);

    Char[] read = new Char[256];

    string strOut = "";

    int count = readStream.Read(read, 0, 256);
    while (count > 0)
    {
        String str = new String(read, 0, count);
        strOut += str;
        count = readStream.Read(read, 0, 256);
    }

    readStream.Close();
    response.Close();
    return strOut;
}

Mit problem er at giver jeg den en URL med æ, ø eller å så fejler den.

Nogle ideer til en løsning?
Avatar billede kalp Novice
22. februar 2008 - 09:16 #1
Server.HtmlDecode(din url)
Avatar billede kalp Novice
22. februar 2008 - 09:18 #2
HttpServerUtility.HtmlDecode()

er der også
Avatar billede sholm Nybegynder
22. februar 2008 - 09:40 #3
I linje 1 i funktionen har jeg gjort dette: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Server.HtmlDecode(strUrl));

Uden held, samme resultat som før.
Avatar billede kalp Novice
22. februar 2008 - 09:43 #4
så prøv encode ;)
Avatar billede sholm Nybegynder
22. februar 2008 - 09:50 #5
Det kan den slet ikke, det giver en serverfejl i linjen: WebResponse response = request.GetResponse();
Avatar billede sholm Nybegynder
22. februar 2008 - 09:57 #6
Den url jeg sender til funktionen ser sådan set fin ud, der bliver æøå vist som de skal.
Avatar billede jokkejensen Novice
22. februar 2008 - 10:51 #7
System.Text.Encoding.GetEncoding("utf-8"); <--- Lav den til System.Text.Encoding.Default.. kan ikke lige huske.. den der autodetecter..

Hvordan ser dine æøå ud ? starter de alle med et "og" tegn og slutter på semikolon  ?

Så skal du Server.HtmlDecode(string)

/JJ
Avatar billede jokkejensen Novice
22. februar 2008 - 10:52 #8
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Server.HtmlDecode(strUrl));
<--- Noooo...

Det er kun dit svar du skal behandle, webrequest håndterer fint en tekst streng..
Avatar billede jokkejensen Novice
22. februar 2008 - 11:01 #9
ufff sorrryyy jeg har læst helt forkert..

Jeg læste det som om du ikke fik æøå tilbage i dit request...

/JJ
Avatar billede jokkejensen Novice
22. februar 2008 - 11:02 #10
hvad skal din metode egentligt gøre ?

Skal den blot teste om du får svar fra url adressen eller hvad ?

Hvis du vil have den til at returnere den samme streng som den tager som parameter forstår jeg ikke...

/J
Avatar billede sholm Nybegynder
22. februar 2008 - 11:09 #11
Den skal returnere en url der bliver genereret på en anden side på baggrund nogle parametre i url'en jeg sender med til metoden. Håber det giver mening...det virker super med url's der ikke indeholder æøå.
Avatar billede sholm Nybegynder
22. februar 2008 - 11:19 #12
Det er som om at når webrequesten behandler min url så laver den om på æøå i sin request.
Avatar billede jokkejensen Novice
22. februar 2008 - 11:30 #13
har du en adresse der virker med æøå ? :)
Avatar billede sholm Nybegynder
22. februar 2008 - 11:37 #14
Det forstår jeg ikke helt :)

Indtaster jeg adressen manuelt i browseren giver den det forventede resultat, men gør jeg det via webrequesten fejler den.
Avatar billede jokkejensen Novice
22. februar 2008 - 11:37 #15
Jeg skal bruge en url adresse med æøå til at teste.. kender ingen :)
Avatar billede sholm Nybegynder
22. februar 2008 - 11:47 #16
Jeg kan ikke give dig en url, det er i et lukket system, sikkerhed og sådan. Men et eksempel kan være: http://www.google.dk/search?hl=da&q=æsel
Avatar billede jokkejensen Novice
22. februar 2008 - 12:10 #17
private bool TestUrl(string s)
    {
        bool b = false;
        try
        {
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(s);
            WebResponse res = req.GetResponse();
            Response.Write(res.ResponseUri);
            b = true;
        }
        catch (System.Net.WebException exp)
        {
            Response.Write(exp.Status + System.Environment.NewLine + exp.ToString());           
        }
        catch(Exception exp)
        {
            Response.Write(exp.ToString());
        }
        finally
        {
           
        }

        return b;

    }
Avatar billede jokkejensen Novice
22. februar 2008 - 12:14 #18
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(s); <-- fejler automatisk hvis url adressen ikke eksisiterer eller domænet ikke kan slåes op osv..

Jeg har dog svært ved at garentere at den kan behandel www.æble.dk eller hvad et domænenavn nu med æøå hedder..

/JJ
Avatar billede sholm Nybegynder
22. februar 2008 - 12:31 #19
Ok, det er jo fint nok.

Men nu er problemet ikke at den skal finde ud af om der kan laves en request der til eller ikke.

Problemet er at jeg gerne vil lave en request til en adresse hvor æøå indgår men ikke kan få lov til at gøre det selv om adressen eksisterer.
Avatar billede kalp Novice
22. februar 2008 - 15:36 #20
måske understøtter den ikke æøå i domæne navnet:)
i hvertfald kan den ikke finde århus og det er altså ikke fordi den ikke findes, men alligevel får man fejl 404.

Med hensyn til url encode så virker det ikke, da det åbenbart kun er til parametre listen og ikke selve url'en..
Avatar billede sholm Nybegynder
25. februar 2008 - 08:12 #21
Nå...jeg lavede begge systemer om til at benytte et id istedet - så ikke mere æøå!

I kan smide et svar så får I lidt point for jeres tid :)
Avatar billede sholm Nybegynder
06. august 2008 - 12:40 #22
Så kan I da også blive fri, så nupper jeg dem selv :)
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

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