Обработка ошибки ответа json на iPhone - PullRequest
0 голосов
/ 01 октября 2009

Я использую json-framework на iPhone для подключения к веб-службе, встроенной в asp.net. Иногда asp.net выдает ошибки на веб-сервис. Но я не могу найти способ обработать их на iPhone, поскольку NSURLConnection не считает их ошибочными. При просмотре данных ответов отображается ошибка в формате json, как я могу легко обработать эту ошибку?

NSError* requestError = nil;
NSData* responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&requestError];

//requestError is still nil even if I get asp.net errors on the server.

SBJSON *parser = [[SBJSON alloc] init];
NSString *jsonResponseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSError *jsonParserError = nil;
NSDictionary *jsonResponse = [parser objectWithString:jsonResponseString error:&jsonParserError];

//jsonParserError is still nil because the response data is in json format, so it wont recognise the error.

Надеюсь, вы понимаете, о чем я говорю, просто хотите простой способ проверить, если ошибка, а затем обработать ее, возможно, показать предупреждение для пользователя или что-то. Спасибо!

1 Ответ

0 голосов
/ 02 октября 2009

Объект ошибки, который вы передаете по ссылке на анализатор JSON, предназначен для перехвата ошибок, возникающих при фактическом разборе строки, а не для обработки ошибок, отправленных вашим веб-сервисом.

Ваше сообщение JSON должно содержать информацию об ошибке, отправленную с сервера. В этом случае все, что вам нужно сделать, - это проанализировать сообщение, а затем проверить полученный NSDictionary на предмет конкретного ключа ошибки, который должен быть определен в сообщении.

Если этот ключ существует в словаре, и его значение равно true (скажем, для error: true против error: false), то у вас есть ошибка, и вы должны ее обработать.

Это действительно зависит от того, что веб-сервис отправляет обратно клиенту в случае ошибки.

Основная идея заключается в том, что он должен отправить сообщение JSON с некоторой информацией, возможно, в формате, аналогичном следующему:

{error:1,errorMessage:"Something went wrong"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...