_kCFStreamErrorCodeKey = -2102只有一些ISP的WiFi

我使用下面的代码将文件发送到服务器:

NSString *urlString = [NSString stringWithFormat:@"%@%@",[LIUtility sharedUtility].uploadConnectionURL,BR_SERVER_UPLOAD_ADDRESS_FILE]; self.request =[[NSMutableURLRequest alloc] init]; [self.request setURL:[NSURL URLWithString:urlString]]; [self.request setHTTPMethod:@"POST"]; PKMultipartInputStream *body = [[PKMultipartInputStream alloc] init]; NSString *requestString =[self getRequestStringForRange:range andExtension:fileName]; NSData *requestData = [requestString dataUsingEncoding:NSUTF8StringEncoding]; NSString *jsonLengthString = [NSString stringWithFormat:@"%04lu",(unsigned long)requestData.length]; NSData *jsonLengthData = [jsonLengthString dataUsingEncoding:NSUTF8StringEncoding]; [body addPartWithName:@"jsonLength" data:jsonLengthData]; [body addPartWithName:@"json" data:requestData]; [body addPartWithName:@"separator" string:@"\r\n"]; [body addPartWithName:@"fileData" filename:fileName stream:dataStream streamLength:streamSize]; [self.request setHTTPBodyStream:body]; [self.request setTimeoutInterval:60]; NSString *contentType = LI_CONNECTION_CONTENTTYPE; [self.request addValue:contentType forHTTPHeaderField: @"Content-Type"]; self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self]; _responseData = [NSMutableData data]; [self.connection start]; 

该文件正在3G / 4G上传。当设备连接到一些ADSL ISP的WiFi,但在其他ISP的代码不工作,我得到以下错误:

错误域= NSURLErrorDomain代码= -1001“请求超时。” UserInfo = {NSErrorFailingURLStringKey = http ://example.net,_kCFStreamErrorCodeKey = -2102,NSErrorFailingURLKey = http:/example.net:80/au,NSLocalizedDescription =请求超时,_kCFStreamErrorDomainKey = 4,NSUnderlyingError = 0x16a40410 {Error Domain = kCFErrorDomainCFNetwork Code = -1001“请求超时。” UserInfo = {_ kCFStreamErrorCodeKey = -2102,NSErrorFailingURLStringKey = http ://example.net,NSErrorFailingURLKey = http://example.net,NSLocalizedDescription =请求超时,_kCFStreamErrorDomainKey = 4}}}

有没有人有什么想法是什么问题?

我终于通过添加Content-Length到请求来解决我的问题。

当我们不将Content-Length头添加到请求时, NSURLConnection将其作为chunked请求发送,似乎这种问题在分块请求中是常见的。

其实我没有发现这个问题的根本原因(我在网上search了很多主题,读了很多文章,与其他几个程序员交谈,但没有find任何根本原因,所以我决定使用另一个解决scheme),但我为可以在业务中使用非分块请求的人共享此解决scheme。 据我所知,分块请求的大多数用法是实时stream,我们不知道Content-Length所以如果你可以添加Content-Length ,我build议使用它来避免像这样的分块的问题。

我刚刚解决了这个问题

我希望这可以帮助你,如果你没有在互联网上find解决scheme,因为这是一个个人的经验。

我已经configuration了所有的HTTP头文件,所有的参数,并检查了Objective-C上的所有编程,但是我忘记了检查服务器端,我的体系结构包含3个组件:应用程序,REST服务器和文件服务器,问题与域,所以这就是因为应用程序不工作,解决了它的工作完美的问题之后。

如果您正在运行企业版本的应用程序,请与您的服务器pipe理员联系,以查看您的证书是否是最新的并且与您的防火墙服务器兼容。 我的不是。