Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Ios _kCFStreamErrorCodeKey=-2102仅适用于某些ISP的wifi_Ios_Objective C_Post_Nsurlconnection - Fatal编程技术网

Ios _kCFStreamErrorCodeKey=-2102仅适用于某些ISP的wifi

Ios _kCFStreamErrorCodeKey=-2102仅适用于某些ISP的wifi,ios,objective-c,post,nsurlconnection,Ios,Objective C,Post,Nsurlconnection,我使用以下代码将文件发送到服务器: NSString *urlString = [NSString stringWithFormat:@"%@%@",[LIUtility sharedUtility].uploadConnectionURL,BR_SERVER_UPLOAD_ADDRESS_FILE]; self.request =[[NSMutableURLRequest alloc] init]; [self.request setURL:[NSURL URLWithString:urlS

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

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中,该代码不工作,我得到以下错误:

Error Domain=NSURERRORDOMAIN Code=-1001“请求超时。”UserInfo={NSERRORFAILINGURSTRINGKEY=,kCFStreamErrorCodeKey=-2102,NSERRORFAILINGURKEY=http:/example.net:80/au,NSLocalizedDescription=请求超时。,kCFStreamErrorDomainKey=4,NSUnderlyingError=0x16a40410{Error Domain=kCFErrorDomainCFNetwork=-1001“请求超时。”UserInfo={kCFStreamErrorCodeKey=-2102,NSErrorFailingURLStringKey=,NSErrorFailingURLKey=,NSLocalizedDescription=请求超时。,{kCFStreamErrorDomainKey=4}}


有人知道问题出在哪里吗?

我最终通过在请求中添加
内容长度
解决了问题

当我们不将
内容长度
头添加到请求中时,
NSURLConnection
将其作为
分块
请求发送,这样的问题似乎在分块请求中很常见


实际上,我没有找到这个
分块的
请求问题的根本原因(我在web上搜索了许多主题,阅读了许多文章,与其他几个程序员交谈,但没有找到任何根本原因,所以我决定使用其他解决方案)但是我为那些可以在业务中使用非分块请求的人分享了这个解决方案。因为我知道分块请求的大多数用法都是实时流,我们不知道
内容长度
,所以如果你可以添加
内容长度
,我建议使用它来避免像这样的分块问题。

我刚刚解决了这个问题假设

如果你在互联网上找不到解决方案,我希望这能对你有所帮助,因为这是一种个人体验


我已经在Objective-C上配置了所有HTTP头、所有参数并检查了所有编程,但我忘了检查服务器端,我的架构包括3个组件:应用程序、REST服务器和文件服务器,文件服务器与域之间存在网络问题,这是因为解决iss后应用程序无法工作的原因ue它工作得很好。

如果您运行的是企业版的应用程序,请与您的服务器管理员联系,查看您的证书是否最新,是否与防火墙服务器兼容。我的证书不是。这对我也有效。

不确定这是否相关,但仅供参考:Xcode 7.2使用Swift,iPad使用iOS 9.2.1。更新的Apple AirPort had问题;一个老问题没有。@husein如何添加内容长度以获取方法。我对获取方法也有同样的问题。你能对此问题提出建议吗?我从过去3天开始一直在努力