我得到了一段代码,它从网站返回标题信息。如果我关闭了 80 端口上的服务并且网站处于离线状态,该应用程序仍然会向我返回标头信息。这是由于某些提供商的代理。前三次它工作正常。它响应在线或离线。收到请求后,该应用程序的网站一直在线。
这是我的代码:
- (IBAction)fastCheckButton:(id)sender {
NSLog(@"TextfieldURL ist: %@", _textFieldUrl);
NSError *error = nil;
NSString* userAgent = @"Desktop";
NSHTTPURLResponse *response = nil;
NSInteger statusCode = [response statusCode];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:_textFieldUrl cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30.0];
[request addValue:userAgent forHTTPHeaderField:@"User-Agent"];
//NSData *conn = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSData* conn = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
[self connection:conn didReceiveResponse:response];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
NSInteger statusCode = [httpResponse statusCode];
NSDictionary* headers = [httpResponse allHeaderFields];
NSLog(@"\n \n DELEGATE STATUS -->: \n \n %d \n \n HEADERS -->: \n \n \n %@", statusCode, headers);
}
这是我的 apache 在端口 80 上运行的示例输出。通过 Wi-Fi 完成
DELEGATE STATUS -->:
200
HEADERS -->:
{
"Accept-Ranges" = bytes;
Connection = "Keep-Alive";
"Content-Length" = 38;
"Content-Type" = "text/html";
Date = "Wed, 29 May 2013 13:42:34 GMT";
Etag = "\"b1fcde-26-4dc47bfd46880\"";
"Keep-Alive" = "timeout=5, max=80";
"Last-Modified" = "Thu, 09 May 2013 11:57:06 GMT";
Server = "Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1"; }
如果我使用 T-Mobile 超过 3g,我还会在标题中添加一个“Age = X”字段。现在的问题是,即使我关闭了端口 80 上的服务,该应用程序仍然说它在线并且年龄仍然向前计算。
通过 Wifi 一切正常。当站点关闭时,我得到了正确的状态代码和错误消息。如果该网站不存在,我得到一个 0。
我只在移动网络上遇到这些问题。
如何通过代理从站点获取正确的状态?