我尝试了很多东西,但不知何故无法在ios中找出HTTP POST请求的基础知识。有时我得到服务器错误,有时我得到状态代码200但是响应为空。后端服务器代码工作,它正在响应发送json数据。不知怎的,我的ios应用程序无法获得该响应。任何帮助将不胜感激!
这是我尝试过的事情之一! GetAuthorOfBook对应于一个php服务器函数,它接受strBookName作为POST参数,并将作者的名称作为json对象返回!
NSURL *url = [NSURL URLWithString:@"http://mysite.com/getAuthorOfBook"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *post = [NSString stringWithFormat:@"strBookName=Rework"];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
[request setValue:@"text/html" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData ];
//get response
NSHTTPURLResponse* urlResponse = nil;
NSError *error = [[NSError alloc] init];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
responseData应该具有作者的名称(strAuthorName)作为json“key”:“value”对。
答案 0 :(得分:1)
responseData还不是json对象。首先,您需要将其序列化并将其分配给NSDictionary,然后您可以按键解析它。
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
现在你应该可以通过这个方法访问authorName(如果它只是json中的一个字符串):
NSString *authorName = [json objectForKey:@"strAuthorName"];
或者像这样,如果它是对象的字典(json中的对象数组)
NSDictionary *authorName = [json objectForKey:@"strAuthorName"];