2009-06-28 7 views

Odpowiedz

12

Wystarczy wykonać prawidłowe połączenie z serwisem WWW. Jeśli przekroczy limit czasu lub wystąpi błąd 404, usługa internetowa nie jest dostępna.

4

Spróbuj go użyć. Jeśli to działa, to jest dostępne. Jeśli nie, to nie jest (lub masz problemy z połączeniem sieciowym między tobą a serwerem). Tu nie ma żadnej magii.

5

Można spróbować tej metody ..

public bool IsAddressAvailable(string address) 
    { 
     try 
     { 
      using(System.Net.WebClient client = new WebClient()) 
      { 
       client.DownloadData(address); 
       return true; 
      } 
     } 
     catch 
     { 
      return false; 
     } 
    } 

... i nazwać tak ...

MessageBox.Show(IsAddressAvailable("http://localhost/my.webservices/mywebservice.asmx").ToString()); 
+0

Podoba mi się (i wykorzystałem to, dziękuję!), Ale sugerowałbym dodanie instrukcji USING podczas tworzenia obiektu klienta. Zwłaszcza, że ​​jest to ping, który będzie używany dużo, ważne jest, aby go usunąć. –

+1

Tak. Odpowiednio zaktualizuję swoją odpowiedź. – lkg

1

Wreszcie napisałem ten kod w Delphi .NET

function WebService_OnLine(UrlWebService:String): Boolean; 
Var 
urlCheck : uri; 
request : WebRequest; 
response : WebResponse; 
begin 
MemoLogWebService.Lines.Add('Testing WebService'); 
urlCheck := Uri.Create(UrlWebService); 
request  := WebRequest.CreateDefault(urlCheck); 
request.Timeout := 20000; 
    try 
     response :=request.GetResponse(); 
     MemoLogWebService.Lines.Add(response.Headers.ToString); 
     Result:=True; 
    except 
     on E : Exception do 
     Begin 
     MemoLogWebService.Lines.Add(E.Message); 
     Result:=False; 
     End; 
    end; 
End; 

PS: Dziękuję bardzo za udzielenie mi inspiracji.

+1

Należy zawęzić pułapkę wyjątków do wyjątków opartych na komunikacji. Rzadko, jeśli chcesz złapać wyjątek, ponieważ może to być katastrofalny błąd i wyjątki związane z komunikacją. –