我只是在get请求中得到了这个错误。在服务器端,我们有来管理对Tomcat的请求和响应。
有两个客户端,安卓和iOS。Android应用程序中的所有功能都很好。另一方面,在iOS应用程序中,所有的POST响应都是正常的,问题只是GET响应。
我跟踪了请求,所有请求都是在服务器端应用程序上接收到的,对于日志,服务器向客户端发送响应,但是客户机没有得到任何响应。
没有一个THIS解决方案适用于我的情况。
我的代码中有一部分:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init];
NSData *data = [request.Data dataUsingEncoding:NSUTF8StringEncoding];
NSString *length = [NSString stringWithFormat:@"%lu", [data length]];
NSMutableURLRequest *urlRequest = [PagingManager makeURLRequest:length andUrl:_url];
[urlRequest setHTTPMethod:@"GET"];
NSArray *arr = [request.Data componentsSeparatedByString:@" "];
NSString *session = [PagingManager normalizeGetRequest:arr[0]];
NSString *query = [PagingManager normalizeGetRequest:arr[1]];
NSString *getReq = [NSString stringWithFormat:@"?s=%@&q=%@", session, query];
NSURL *getURL = [NSURL URLWithString:[_url concat:getReq]];
urlRequest.URL = getURL;
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:urlRequest uploadProgress:nil downloadProgress:nil completionHandler:^
(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
DDLogError(@"ERROR: %@, reason: %@", @"connection failed with error", [error debugDescription]);
NSString *const TIMEOUT = @"TimeOut";
NSException *p = [[NSException alloc] initWithName:EXExceptionOnExchangeClientConnectionFail
reason:(error.code == NSURLErrorTimedOut) ? TIMEOUT : [error localizedDescription]
userInfo:nil];
EXExchangeExceptionEventArgs *eventArgs = [[EXExchangeExceptionEventArgs alloc] initWithRequest:_request andError:p];
[self exchangeException:eventArgs];
_isRunning = NO;
} else {
NSString *responseString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSData *decryptData = [[IOCryptographer Current] asDataDecryptString:responseString];
if (_request.ReqMethod == GET) {
DDLogDebug(@"Cache-Control Max-Age : %@", ((NSHTTPURLResponse *) response).allHeaderFields[@"Cache-Control"]);
DDLogDebug(@"All header of response in GET : %@", ((NSHTTPURLResponse *) response).allHeaderFields);
DDLogDebug(@"response: %@ and responseObject: %@", response, responseObject);
NSCachedURLResponse *cachedURLResponse = [[NSCachedURLResponse alloc] initWithResponse:response data:decryptData];
[NSURLCache.sharedURLCache storeCachedResponse:cachedURLResponse forRequest:cacheRequest];
} else {
DDLogDebug(@"All header of response in POST : %@", ((NSHTTPURLResponse *) response).allHeaderFields);
}
[_dataStream appendData:decryptData];
[self connectionDidFinishLoadingWithData:responseString];
}
}];
[dataTask resume];
以及我的应用程序日志:
12:41:22.871344+0430 AppName53990:2111182 TIC读取状态4:0x60800016ec40: 1:57 2018-06-04 12:42:27.006807+0430 AppName53990:2112128 TIC读取状态5:0x60c000170500: 1:57 2018-06-04 12:42:47.084334+0430 AppName53990:2112128 TIC读取状态6:0x60c00016f000: 1:57 2018-06-04 12:42:47.085662+0430 AppName53990:2112128任务<87C4E404-57F-47F2-A102-D516D6D9B67><1> HTTP负载失败(错误代码:1005 4:-4)2018-06-04 12:42:47.085935+0430 AppName53990:2112202任务<87C4E404-57AF-47F2-A 102-D516D6D9B67>。<1>完成错误-代码:-1005 2018-06-04 12:42:47.087246+0430 AppName53990:2112202 2018-06-04T12:42:47:086线程:2110090类:EXExchangeClient方法:[-EXExchangeClient handleAsync:andMode:_block_invoke@118]描述:[]:错误:错误连接失败,原因:错误的Domain=NSURLErrorDomain代码=-1005“网络连接丢失。UserInfo={NSUnderlyingError=0x60c00025c0e0 { error Domain=kCFErrorDomainCFNetwork代码=-1005 "(null)“UserInfo={kCFStreamErrorCodeKey=-4,_kCFStreamErrorDomainKey=4},NSErrorFailingURLStringKey=https://{App URL}/?s={session id},NSErrorFailingURLKey=https://{App URL}/?s={session id},_kCFStreamErrorDomainKey=4,_kCFStreamErrorCodeKey=-4,NSLocalizedDescription=The网络连接丢失。} ERROR 2018-06-04T12:42:47:086线程:2110090类:EXExchangeClient方法:[-EXExchangeClient handleAsync:andMode:_block_invoke@118]描述:[-EXExchangeClient handleAsync:andMode:_block_invoke@118]描述:[]:错误:连接失败错误,原因:错误的Domain=NSURLErrorDomain代码=-1005“网络连接丢失。UserInfo={NSUnderlyingError=0x60c00025c0e0 { Domain=kCFErrorDomainCFNetwork代码=-1005 "(null)“UserInfo={kCFStreamErrorCodeKey=-4,_kCFStreamErrorDomainKey=4},NSErrorFailingURLStringKey=https://{App }/?s={session id},NSErrorFailingURLKey=https://{App URL}/?s={session id},_kCFStreamErrorDomainKey=4,_kCFStreamErrorCodeKey=-4,NSLocalizedDescription=The网络连接丢失。} ERROR 2018-06-04T12:42:47:099线程:2110090类:EXSession方法:[-EXSession onExchangeException:@159]描述:[]:错误:网络连接丢失。2018-06-04 12:42:47.100285+0430 AppName53990:2112202 2018-06-04T12:42:47:099线程:2110090类:EXSession方法:[-EXSession onExchangeException:@159]描述:[]:错误:网络连接丢失。调试2018-06-04T12:42:47:100线程:2110090类:EXSession方法:[-EXSession goRequestExchangeException:@346]描述:[]:Exchange结束2018-06-04 12:42:47.101545+0430 AppName53990:2112372 2018-06-04T12:42:47:100个线程:2110090类:EXSession方法:[-EXSession goRequestExchangeException:@346]描述:[]:交换结束的错误2018-06-04T 12:42:47:100线程:2110090类EXSession方法:[-EXSession goRequestExchangeException:@348]描述:[]:服务器错误:网络连接丢失。2018-06-04 12:42:47.102801+0430 AppName53990:2112372 2018-06-04T12:42:47:100线程:2110090类:EXSession方法:[-EXSession goRequestExchangeException:@348]描述:[]:服务器-错误:网络连接丢失。
我想这个问题源于Apache。
这个问题有什么解决办法吗?谢谢你的帮助。
发布于 2018-07-07 06:18:47
最后,3周后,我找到了一个解决方案。我们将“内容长度”设置为标头,而Apache(WWW)则删除包含它的请求。所以我删除了标题,现在一切都很好:)
发布于 2019-11-14 08:09:53
我也面临着同样的问题,我附上了决议的截图,以展示我是如何解决这个问题的。
在我的例子中,问题是从服务器Sucuri/Cloudproxy (或者您可以说防火墙服务)阻止API请求。禁用防火墙解决了这个问题。
https://stackoverflow.com/questions/50678114
复制相似问题