Objective c NSURL连接故障-1003
我尝试使用以下命令从特定url检索数据:Objective c NSURL连接故障-1003,objective-c,timeout,nsurlconnection,nsurlrequest,Objective C,Timeout,Nsurlconnection,Nsurlrequest,我尝试使用以下命令从特定url检索数据: -(NSMutableData *) callUrl: (NSString *)url withData:(NSMutableDictionary *)data delegate:(id) delegate { NSURL *executeUrl = [NSURL URLWithString:<string>]; NSURLRequest *request = [NSURLRequest requestWithURL: ex
-(NSMutableData *) callUrl: (NSString *)url withData:(NSMutableDictionary *)data delegate:(id) delegate {
NSURL *executeUrl = [NSURL URLWithString:<string>];
NSURLRequest *request = [NSURLRequest requestWithURL: executeUrl
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60];
NSMutableData *receivedData = nil;
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:delegate];
if (theConnection) {
receivedData = [[NSMutableData data] retain];
} else {
@throw @"Connection error";
}
return receivedData;
}
问题是,当我提供错误的url时,我得到了正确的错误-这是好的部分-但我想执行第二个url-当然好,我得到了1003个错误-nsurlerorcannotfindhost
大约1-2分钟后,我成功地调用url并获取数据。
我怀疑有一些超时和端口业务,但在NSURLRequest中更改超时并不会改变任何事情
更新
事实证明,管理员在通过WiFi网络访问DNS服务器时遇到了一些问题。代码很好。谢谢你的回复。
如果有类似的问题:请尝试ip地址而不是主机名。在进行任何新的连接呼叫之前,请取消以前的连接。 使用
从Apple iOS开发者文档中,1003错误指无法解析URL的主机名。为了避免wifi中的DNS故障,在DNS过载的情况下,最好从主机名解析ip以供后续使用,或者直接硬编码ip地址(如果您不打算稍后转移主机) 苹果文档:
URL Loading System Error Codes
这些值作为域为“NSURErrorDomain”的NSError对象的错误代码属性返回
enum
{
NSURLErrorBadURL = -1000,
NSURLErrorTimedOut = -1001,
NSURLErrorUnsupportedURL = -1002,
NSURLErrorCannotFindHost = -1003,//****
NSURLErrorCannotConnectToHost = -1004,
NSURLErrorDataLengthExceedsMaximum = -1103,
NSURLErrorNetworkConnectionLost = -1005,
NSURLErrorDNSLookupFailed = -1006,
...
}
1003 NSURLErrorCannotFindHost
Returned when the host name for a URL cannot be resolved.
Available in iOS 2.0 and later.
Declared in NSURLError.h.
我做了两件事来解决此问题:
[NSURLConnection cancelPreviousPerformRequestsWithTarget:self]代码>
不知道是哪一个解决了问题,但问题已经解决。在释放连接之前,我尝试取消连接。没有任何效果。你是怎么修复的?你试过ip地址吗?我也面临同样的问题。请建议。
URL Loading System Error Codes
enum
{
NSURLErrorBadURL = -1000,
NSURLErrorTimedOut = -1001,
NSURLErrorUnsupportedURL = -1002,
NSURLErrorCannotFindHost = -1003,//****
NSURLErrorCannotConnectToHost = -1004,
NSURLErrorDataLengthExceedsMaximum = -1103,
NSURLErrorNetworkConnectionLost = -1005,
NSURLErrorDNSLookupFailed = -1006,
...
}
1003 NSURLErrorCannotFindHost
Returned when the host name for a URL cannot be resolved.
Available in iOS 2.0 and later.
Declared in NSURLError.h.