Avatar billede coder Nybegynder
22. november 2005 - 18:16 Der er 8 kommentarer og
1 løsning

Modtag fejl med WebRequest!

Hej!

Jeg bruger WebRequest til at rippe en side med. Men fejler siden (fx 403 eller 404) vil jeg gerne have skrevet det ud serveren sender!

Ikke bare catch'e fejlen!

Got it? Altså WebRequest kaster en fejl når den finder en side med fx en 403 fejl. Men den skal bare læse siden alligevel!! Serveren smider altid noget ud - og det får jeg ik fat i nu :(

Jeg bruger følgende kode:
--
WebRequest wr = WebRequest.Create("http://lalala"));
string data = new StreamReader(wr.GetResponse().GetResponseStream()).ReadToEnd();

Tak!
Avatar billede arne_v Ekspert
22. november 2005 - 18:23 #1
fra lageret:

using System;
using System.Net;

namespace E
{
    public class WebTest
    {
        public static void Test(string url)
        {
            try
            {
                WebRequest wreq = WebRequest.Create(url);
                WebResponse wresp = wreq.GetResponse();
                if(wresp is HttpWebResponse)
                {
                    HttpWebResponse hwresp = (HttpWebResponse)wresp;
                    if(hwresp.StatusCode == HttpStatusCode.OK)
                    {
                        Console.WriteLine(url + " is working");
                    }
                    else
                    {
                        Console.WriteLine(url + " has small problems: " + hwresp.StatusDescription);
                    }
                }
                else
                {
                    Console.WriteLine(url + " is not a HTTP URL");
                }
            }
            catch(WebException wex)
            {
                if(wex.Response == null)
                {
                    Console.WriteLine(url + " has big problems: " + wex.Message);
                }
                else
                {
                    if(wex.Response is HttpWebResponse)
                    {
                        HttpWebResponse hwresp = (HttpWebResponse)wex.Response;
                        if(hwresp.StatusCode == HttpStatusCode.OK)
                        {
                            Console.WriteLine(url + " is working");
                        }
                        else
                        {
                            Console.WriteLine(url + " has small problems: " + hwresp.StatusDescription);
                        }
                    }
                    else
                    {
                        Console.WriteLine(url + " is not a HTTP URL");
                    }
                }
            }
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            WebTest.Test("http://arne/index.html");
            WebTest.Test("http://arne/notexist.html");
            WebTest.Test("http://notexist/index.html");
        }
    }
}
Avatar billede coder Nybegynder
22. november 2005 - 18:37 #2
hej Arne.

Nu har jeg ik lige testet din kode, men kan ik lige se hvor du udskriver sidens indhold?

Så vidt jeg kan se tjekker du blot om filen eksisterer?

Har du læst mit spørgsmål?
Avatar billede coder Nybegynder
22. november 2005 - 18:38 #3
Altså ingen statuscoder - det ka jeg ik bruge.
Jeg ska ha sidens indhold - om den "fejler" eller ej! (fx. scriptfejl - så skal jeg ha fejl-rapporten!)
Avatar billede arne_v Ekspert
22. november 2005 - 18:57 #4
hwresp.GetResponseStream()

som du selv skrev i spørgsmålet giver content !

tricket er at catche WebException og hente Response ud af den
Avatar billede coder Nybegynder
22. november 2005 - 19:13 #5
kan ik lige se hvordan jeg skal kunne trække HTML'en ud af en WebException??

Kan du komme med et hint??
Avatar billede arne_v Ekspert
22. november 2005 - 19:16 #6
catch(WebException wex)
{
    ...
    HttpWebResponse hwresp = (HttpWebResponse)wex.Response;
    string data = new StreamReader(hwresp.GetResponseStream()).ReadToEnd();
    ...
}

MEN MEN MEN

der vil nok sjældent være et response ved en fejl

husk at det du ser i IE sommetider ikke kommer fra server men er IE's forsøg
på at være hjælpsom
Avatar billede coder Nybegynder
22. november 2005 - 19:17 #7
njarh - det der kommer fra IE er jo fordi serverens standardfejl ikke er lang nok - derfor sætter IE dens egen ind.

Det er derfor mange lægger en lang kommentar ind i deres fejl, så IE ik tar over!
Avatar billede coder Nybegynder
22. november 2005 - 19:19 #8
men det virker som det skal - super!
smid et svar - så er pointene dine
Avatar billede arne_v Ekspert
22. november 2005 - 19:20 #9
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