2009-10-01 94 views
0

我在iPhone上使用json-framework连接到在asp.net中构建的web服务。有时asp.net会在Web服务上抛出错误。但我找不到在iPhone上处理它们的方法,因为它们似乎不被NSURLConnection识别为错误。在查看响应数据时,它显示了json格式的错误,我怎样才能以一种简单的方式处理这个错误?在iPhone上处理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. 

希望你明白我在说什么,只是想一个简单的方法来检查是否错误然后处理它,也许显示一个警告为用户或什么。谢谢!

+0

为什么你的web服务引发错误,你不要处理?我认为你sohuld处理你的异常服务器端并返回告诉你错误发生的东西,不只是让错误传播给调用者。 – Daniel 2009-10-01 15:43:52

+0

谢谢!是的,这正是我想要做的,但我不确定在发生错误时要返回给用户的是什么。如果我在服务器上发生错误,并且我可以在客户端上做什么,应该返回什么? – Martin 2009-10-01 16:27:58

+0

你可以返回一个错误字符串或类似的东西 - 也许有一个代码(你将不得不列出什么代码意味着什么) – Daniel 2009-10-01 18:01:20

回答

0

通过引用JSON解析器传递的错误对象用于捕获实际解析字符串期间发生的错误 - 不是用于处理从Web服务发送的错误。

您的JSON消息应包含从服务器发送的错误信息。如果是这样的话,你需要做的就是解析消息,然后检查生成的NSDictionary是否应该在消息中定义的特定错误键。

如果该密钥存在于字典中,并且其值为true(比如错误:true vs error:false),那么你有一个错误,你应该处理它。

它确实取决于Web服务在发生错误时发回客户端的内容。

的基本想法是,它应该以类似的形式发送JSON消息的一些信息,可能是为了:

{error:1,errorMessage:"Something went wrong"} 
+0

谢谢!多数民众赞成在我想我可以,已经改变它,它的作品完美! – Martin 2009-10-06 14:19:25