如何检查主机的Web服务

vik*_*kas 2 iphone objective-c

我查看了其他相关问题,但没有一个给我正确的方法.

我需要检查我的应用程序中的主机可用性.我正在使用可达性API进行主机检测.我按照下面的说法使用它

self.hostReach = [Reachability reachabilityWithHostName:@"https://10.98.241.22:8080/arsys"];
[self.hostReach startNotifier];
Run Code Online (Sandbox Code Playgroud)

即使主机可用,它也会在以下代码中将连接状态设置为"不可访问"

NetworkStatus netStatus = [self.hostReach currentReachabilityStatus];
Run Code Online (Sandbox Code Playgroud)

请帮帮我,让我知道我做错了什么.

我需要使用reachabilityWithAddress这种类型的主机URL.如果是,那么请建议我使用此API的示例示例.

感谢大家!!

hwa*_*xer 8

主机名基本上是指域名,而不是协议(http/https)和IP地址.

如果您想使用IP地址,请尝试-reachabilityWithAddress:.它应该看起来像这样:

struct sockaddr_in address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htons(8080);
address.sin_addr.s_addr = inet_addr("10.98.241.22");
Reachability *addressReach = [Reachability reachabilityWithAddress:&address];
Run Code Online (Sandbox Code Playgroud)

别忘了 #include <arpa/inet.h>

编辑 - 4年后

解决这个问题的现代和正确的方法是使用像AFNetworkReachabilityManager这样的东西,它也可以检查可用的互联网连接类型.