【发布时间】:2020-02-07 11:50:21
【问题描述】:
- 向我的服务器发出请求时,我的应用会间歇性地抛出“请求超时”错误。
- 有时会持续发生,只有退出并重新启动应用才能解决问题。
- 我们有一个代理服务器来跟踪我对服务器的请求的错误。 当时对代理服务器的所有调用以跟踪错误都是成功的。
- 这断定这不是网络问题,也不是来自应用程序的多个同时请求,因为请求正在到达代理服务器。
- 增加 timeOut 间隔并不能解决问题。
- 失败请求发送的api和params都没有问题,和我们收到成功响应时一样。
代码块:
NSURL *url = [NSURL URLWithString:</* my urlString> */];
NSData *postData = // My data
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
// Creating URLRequest
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setTimeoutInterval:120];
[request setHTTPBody:postData];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
// Creating NSURLSession and sending the request
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
configuration.URLCache = nil;
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// Response handling
}
有人可以帮忙吗?请建议是否还必须从服务器端检查任何内容。
【问题讨论】:
-
请在问题中包含一些 Obj-C 网络代码。
-
已按要求添加代码。
标签: ios objective-c httprequest nsurlsession