Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSURL连接故障-1003_Objective C_Timeout_Nsurlconnection_Nsurlrequest - Fatal编程技术网

Objective c NSURL连接故障-1003

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

我尝试使用以下命令从特定url检索数据:

-(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.

我做了两件事来解决此问题:

  • 在启动NSURL连接之前,我使用了此选项

    [NSURLConnection cancelPreviousPerformRequestsWithTarget:self]

  • 我在wifi设置中将DNS改为8.8.8.8,这是谷歌的公共DNS服务器

  • 不知道是哪一个解决了问题,但问题已经解决。

    在释放连接之前,我尝试取消连接。没有任何效果。你是怎么修复的?你试过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.