AFNetWork3.0 Error Domain=NSURLErrorDomain Code=-1005。

新手上路,请多包涵

网络请求失败:Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSUnderlyingError=0x7ff218465150 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "The network connection was lost." UserInfo={NSErrorFailingURLStringKey=http://192.168.1.89:8888/shihai_snatch/v1/u/userBuyList, NSErrorFailingURLKey=http://192.168.1.89:8888/shihai_snatch/v1/u/userBuyList, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4, NSLocalizedDescription=The network connection was lost.}}, NSErrorFailingURLStringKey=http://192.168.1.89:8888/shihai_snatch/v1/u/userBuyList, NSErrorFailingURLKey=http://192.168.1.89:8888/shihai_snatch/v1/u/userBuyList, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-4, NSLocalizedDescription=The network connection was lost.}

经常出现这种情况 请问怎么解决

阅读 11.2k
2 个回答

这看着就是网断了……或者服务器关了……

你的URL里面有特殊两个字符":",第一个":"是可以争正常识别的,第二个":"也就是端口号,不能正常识别的,所以报了URL不合法的错误。

iOS里面访问URL和浏览器直接访问有些区别,浏览器在请求时会给URL进行特殊字符编码,但是iOS开发时你就需要自己编码,NSString编码有现成的方法,如下

- (NSString *)URLEncodedString:(NSString*)resource {
    CFStringRef url = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)resource, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8); // for some reason, releasing this is disasterous
    NSString *result = (__bridge NSString *)url;
    //    [result autorelease];
    return result;
}

请在拼装NSURL前,将NSString地址编码。
这样就会把URL中的特殊字符!*'();:@&=+$,/?%#[]转换成对应的%形式编码,才能正常请求。

希望能够帮到你,祝你好运。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题