iOS Приложение отображает ошибку «Время ожидания запроса» при наличии сети - PullRequest
0 голосов
/ 07 февраля 2020
  • Время от времени мое приложение выдает ошибки «Время ожидания запроса» при отправке запросов на мой сервер.
  • Иногда бывает так, что только выход и повторный запуск приложения решают его.
  • Мы иметь прокси-сервер для отслеживания ошибок моих запросов к серверу. Все вызовы того времени на прокси-сервер для отслеживания ошибок успешны .
  • Это означает, что это не проблема сети или множественные одновременные запросы из приложения, поскольку запросы поступают на прокси-сервер.
  • Увеличение интервала timeOut не решает проблему.
  • API и параметры, отправленные для неудавшихся запросов, в порядке, так же, как когда мы получаем успешный ответ.

Кодовый блок:



    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
}

Может кто-нибудь помочь? Пожалуйста, подскажите, нужно ли что-либо проверять и со стороны сервера.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Request Time Out просто означает, что запрос, отправленный вашим приложением, не может вернуться к вашему приложению с ответом в течение заданного промежутка времени, для этого могут быть сотни причин. Я предлагаю вам выполнить следующее устранение неполадок:

  • Удалите прокси-сервер между вашим приложением и сервером
  • Увеличьте интервал ожидания запроса в вашем приложении
  • Попробуйте отправить запрос с помощью http-клиента, например почтальон
0 голосов
/ 07 февраля 2020

Вы должны добавить NSAppTransportSecurity ключ к файлу info.plist вашего проекта.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
...