Avatar billede jaffafo Nybegynder
18. oktober 2005 - 05:22 Der er 11 kommentarer og
1 løsning

Tjekke om link er dødt

Hej

jeg henter en XML fra en anden server:
myXml.Load(http://sti til xml)

Jeg vil tjekke om jeg ingenting pga serveren er død eller om min query bare ikke eksisterer. (jeg sender et ID med som querystring)

Er det muligt?
Avatar billede arne_v Ekspert
18. oktober 2005 - 18:31 #1
Prøv og hent dokumentet med en WebRequest, få en WebResponse med GetResponse og
cast til en HttpWebResponse så vil en exception betyde intet svar mens du vil
kunne se i StatusCode property vilken status kode serveren har returneret.
Avatar billede jaffafo Nybegynder
18. oktober 2005 - 19:28 #2
Hej.. du kunne vel ikke hurtigt skitse et eksempel sammen kunne ud?..  jeg har aldrig før  brugt nogen af de ting der før :/
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:40 #3
5 minutter
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:48 #4
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 problems: " + hwresp.StatusDescription);
                    }
                }
                else
                {
                    Console.WriteLine(url + " is not a HTTP URL");
                }
            }
            catch(Exception ex)
            {
                Console.WriteLine(url + " has problems: " + ex.Message);
            }
        }
    }
    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 arne_v Ekspert
18. oktober 2005 - 19:50 #5
eller i VB.NET:

Imports System
Imports System.Net

Namespace E
    Public Class WebTest
        Public Shared Sub Test(ByVal url As String)
            Try
                Dim wreq As WebRequest = WebRequest.Create(url)
                Dim wresp As WebResponse = wreq.GetResponse
                If TypeOf wresp Is HttpWebResponse Then
                    Dim hwresp As HttpWebResponse = CType(wresp, HttpWebResponse)
                    If hwresp.StatusCode = HttpStatusCode.OK Then
                        Console.WriteLine(url + " is working")
                    Else
                        Console.WriteLine(url + " has problems: " + hwresp.StatusDescription)
                    End If
                Else
                    Console.WriteLine(url + " is not a HTTP URL")
                End If
            Catch ex As Exception
                Console.WriteLine(url + " has problems: " + ex.Message)
            End Try
        End Sub
    End Class

    Class MainClass
        Public Shared Sub Main(ByVal args As String())
            WebTest.Test("http://arne/index.html")
            WebTest.Test("http://arne/notexist.html")
            WebTest.Test("http://notexist/index.html")
        End Sub
    End Class
End Namespace
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:50 #6
den smider iøvrigt en exception også ved ikke eksisterende sider
Avatar billede arne_v Ekspert
18. oktober 2005 - 19:59 #7
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 arne_v Ekspert
18. oktober 2005 - 19:59 #8
Imports System
Imports System.Net

Namespace E
    Public Class WebTest
        Public Shared Sub Test(ByVal url As String)
            Try
                Dim wreq As WebRequest = WebRequest.Create(url)
                Dim wresp As WebResponse = wreq.GetResponse
                If TypeOf wresp Is HttpWebResponse Then
                    Dim hwresp As HttpWebResponse = CType(wresp, HttpWebResponse)
                    If hwresp.StatusCode = HttpStatusCode.OK Then
                        Console.WriteLine(url + " is working")
                    Else
                        Console.WriteLine(url + " has small problems: " + hwresp.StatusDescription)
                    End If
                Else
                    Console.WriteLine(url + " is not a HTTP URL")
                End If
            Catch wex As WebException
                If wex.Response Is Nothing Then
                    Console.WriteLine(url + " has big problems: " + wex.Message)
                Else
                    If TypeOf wex.Response Is HttpWebResponse Then
                        Dim hwresp As HttpWebResponse = CType(wex.Response, HttpWebResponse)
                        If hwresp.StatusCode = HttpStatusCode.OK Then
                            Console.WriteLine(url + " is working")
                        Else
                            Console.WriteLine(url + " has small problems: " + hwresp.StatusDescription)
                        End If
                    Else
                        Console.WriteLine(url + " is not a HTTP URL")
                    End If
                End If
            End Try
        End Sub
    End Class

    Class MainClass
        Public Shared Sub Main(ByVal args As String())
            WebTest.Test("http://arne/index.html")
            WebTest.Test("http://arne/notexist.html")
            WebTest.Test("http://notexist/index.html")
        End Sub
    End Class
End Namespace
Avatar billede arne_v Ekspert
18. oktober 2005 - 20:00 #9
så skulle den skelne mellem ikke eksisterende side (small problem) og ikke eksisterende
server (big problem)
Avatar billede jaffafo Nybegynder
18. oktober 2005 - 22:41 #10
Takker mange gange :)
Avatar billede jaffafo Nybegynder
18. oktober 2005 - 22:41 #11
smider du lige et svar? :)
Avatar billede arne_v Ekspert
18. oktober 2005 - 22:43 #12
kommer her
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