1

Я работаю над приложением iOS и сталкиваюсь с одной странной проблемой. Я использую инфраструктуру AFNetworking для связи с сервером (связь HTTPS). Я получаю данные о студентах с сервера с помощью API веб-сервисов getStudentData. Это почтовый запрос. Он работает для всех идентификаторов пользователей, кроме одного. Это не удается, когда у нас есть данные для более чем 450 студентов. Ниже приведены подробные сведения об ошибках,Ошибка AFNetworking -1017

Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo=0x7bf9c7d0 {NSErrorFailingURLStringKey=https://www.fdmobileservices.com/mAccountsWeb/services/speedpass/rpc, _kCFStreamErrorCodeKey=-1, NSErrorFailingURLKey=https://www.fdmobileservices.com/mAccountsWeb/services/speedpass/rpc, NSLocalizedDescription=cannot parse response, _kCFStreamErrorDomainKey=4, NSUnderlyingError=0x7bf9a380 "cannot parse response"} 

В соответствии с описанием ошибки, это говорит «Не удалось разобрать», так что я думаю, что это может быть связано с сервером возвращается «ноль» или некоторые другие, чем формат JSON данных.

Но я не в состоянии проследить его, так как со стороны приложения оно непосредственно переходит в ниже метод,

- (void)connection:(NSURLConnection __unused *)connection 
didFailWithError:(NSError *)error 

Есть ли способ из стороны приложения, чтобы проследить причину? Этот метод работает для другого пользователя, кроме одного.

Я пробовал использовать веб-клиент для доступа к этой службе с помощью того же пользовательского входа, он хорошо работает и возвращает данные 450 студентов. Я думаю, по какой-то причине сетевой уровень iOS отвергает это. Я пытаюсь это выяснить.

Заранее благодарен.

+0

Попробуйте сделать следующее с вашим веб-клиентом: 1) убедиться, что код состояния HTTP равен 2xx 2) гарантировать, что ответ json действителен с помощью http://jsonlint.com/ – user996142

+0

Да, я уже пробовал обе, но не повезло :( – Swapnil

ответ

0

Как вы можете видеть here, kCFURLErrorCannotParseResponse = -1017. Поэтому, вероятно, это говорит о том, что в параметрах есть что-то не так.

Если вы используете AFNetworking 2.0, я предлагаю вам глубоко отлаживать поток ответов с точками останова. частности попытаться установить точку останова на AFURLResponseSerialization.m в начале метода:

- (id)responseObjectForResponse:(NSURLResponse *)response 
          data:(NSData *)data 
          error:(NSError *__autoreleasing *)error; 

Внутри метода, если ниже условие истинно, то, вероятно, есть что-то не так (но вы можете уйти в validateResponse:data:error:, чтобы лучше понять, что неправильно):

if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) 

Если вышеуказанное условие ложно вы можете проверить о сгенерированной responseString:

NSString *responseString = [[NSString alloc] initWithData:data encoding:stringEncoding]; 

Если вы ожидаете данные json, проверьте, что responseString не nil и data данные действительны, возможно, также stringEncoding.
Также убедитесь, что тип contentType, который вы получаете, является тем, который вы ожидаете.

+0

Да, я попытался отладить метод responseObjectForResponse:, но он не входит в этот метод, вместо этого идет «didfailwithError:» .... – Swapnil

Смежные вопросы