Nachdem ich die Antwort für gelesen habe diese Frage Ich habe festgestellt, dass die Verwendung von reachabilityWithHostName
nicht mit einer URL wie der folgenden funktioniert: mySite.com/service.asmx
, gibt es trotzdem eine Erreichbarkeit für diese URL mit reachabilityWithHostName
oder einer reachability
-Klassenmethode?
Vielen Dank im Voraus.
Die Erreichbarkeitsklasse und -reachabilityWithHostname:
wurden entwickelt, um ein schneller, fehlgeschlagener Mechanismus zu sein, mit dem festgestellt werden kann, ob eine grundlegende Netzwerkverbindung zum Host besteht. Wenn Sie überprüfen müssen, ob eine bestimmte URL heruntergeladen werden kann, müssen Sie mithilfe von NSURLConnection
den Inhalt der URL abrufen, um sicherzustellen, dass sie wirklich verfügbar ist.
Je nachdem, ob Sie dies im Vordergrund oder im Hintergrund tun müssen, können Sie entweder das einfache aber das blockierende:
verwenden %Vor%oder Sie können die kompliziertere Methode zum Erstellen eines NSURLConnection-Objekts verwenden, indem Sie einen Delegaten zum Empfangen von Antworten einrichten und darauf warten, dass diese Antworten eingehen.
Für den einfachen Fall:
%Vor% Wenn Sie eine nicht-nil myData erhalten, haben Sie eine Art von Konnektivität. response
und error
sagen Ihnen, was der Server Ihnen antwortete (im Falle einer Antwort und wenn Sie eine non-nil myData erhalten haben) oder welche Art von Fehler aufgetreten ist, im Falle eines nil myData.
Für den nicht-trivialen Fall können Sie eine gute Anleitung von Apples Verwenden von NSURLConnection .
Wenn Sie Ihren Vordergrundprozess nicht blockieren möchten, können Sie dies auf zwei verschiedene Arten tun. Die obige Dokumentation enthält Informationen zum Implementieren des Delegaten usw. Eine einfachere Implementierung wäre jedoch, GCD zu verwenden, um die synchrone Anforderung in einem Hintergrundthread zu senden, und sich dann im Hauptthread zu melden, wenn Sie fertig sind. p>
In etwa so:
%Vor%Tags und Links objective-c iphone ios cocoa-touch reachability