您好,我在项目中对Ios来说非常新,我正在整合网络服务,这很好。
当我向服务器发送正确的请求时,响应来自下面的服务器"我的第一个响应"。
如果我们向服务器发送了错误的请求,那么响应来自服务器,如下面的#34;我的第二个响应。"
所以我们不知道在发送请求后我们从服务器获得哪种类型的Json对象。
这里我的主要要求是如果我们从服务器得到正确的响应(如下面的第一个响应),那么我们可以保存我们想要的所有元素。
如果我们得到错误的响应(如下面的第二个响应),那么我们如何找到以及如何打印该消息,因为有时我们得到适当的响应,有时我们从服务器得到错误的响应,所以我们怎么能找到,怎么能我们保存这个回复。
请帮帮我。
responseObject = {
{
Name = Broad;
DeptNo = A00;
BatchNo = 23;
DeptId = 120;
},
{
Name = James;
DeptNo = B00;
BatchNo = 23;
DeptId = 123;
},
}
responseObject = {
error = 1;
message = "Invalid Code";
}
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"12345678" ,@"scacode",
nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"my url"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:15.0];
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
if (error) {
NSLog(@"dataTaskWithRequest error: %@", error);
}
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode != 200) {
NSLog(@"Expected responseCode == 200; received %ld", (long)statusCode);
}
}
NSError *parseError;
id responseObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
if (!responseObject) {
NSLog(@"JSON parse error: %@", parseError);
} else {
NSLog(@"responseObject = %@", responseObject);
}
}];
[task resume];
}
答案 0 :(得分:0)
在您的情况下,您可以使用以下内容:
NSDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
if([responseObject objectForKey:@"error"] == nil)
{
//You are getting correct response
}
else{
// You are getting response with error
}
答案 1 :(得分:0)
您可以检查响应是否有错误的密钥。否则,您可以在服务器端使用新变量来处理所有响应,例如statusCode。因此,如果您收到错误或成功,可以将服务器端设置为statusCode。这样做非常明确。
答案 2 :(得分:0)
您可以使用UIAlertView显示错误消息
if([responseObject objectForKey:@"error"] == nil)
{
//You are getting correct response
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your Message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
else
{
// You are getting response with error
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Error Message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
答案 3 :(得分:0)
我猜你没有发布整个responseObject(发送正确的请求时)。假设您在响应正确时获得 错误= 0 键,则可以执行以下操作:
NSMutableDictionary *jsonDictionary= [NSMutableDictionary alloc]init]
jsonDictionary=responseObject;
if([jsonDictionary valueForKey:@"error"]==@"0"]
{
//do some stuff
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Invalid Request" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}