Ios5 如何发送带有参数的基本POST HTTP请求并显示json响应?

Ios5 如何发送带有参数的基本POST HTTP请求并显示json响应?,ios5,Ios5,我尝试了很多方法,但不知怎么的,我无法理解ios中HTTP POST请求的基本原理。有时我得到一个服务器错误,有时我得到一个空响应的状态码200。后端服务器代码正常工作,并发送json数据作为响应。不知何故,我的ios应用程序无法获得该响应。任何帮助都将不胜感激 这是我尝试过的事情之一!GetAuthorOfBook对应于一个php服务器函数,该函数接受strBookName作为POST参数,并将作者的姓名作为json对象返回 NSURL *url = [NSURL URLWithString:

我尝试了很多方法,但不知怎么的,我无法理解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“键”:“值”对。

responseData还不是json对象。首先,您需要序列化它并将其分配给NSDictionary,然后您可以按键解析它

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
现在,您应该能够通过以下任一方法访问authorName(如果它只是json中的一个字符串):

或者,如果它是一个对象字典(json中的一个对象数组),则与此类似

NSString *authorName = [json objectForKey:@"strAuthorName"];
NSDictionary *authorName = [json objectForKey:@"strAuthorName"];