我创建了一个简单的php文件来输出JSON字符串:
<?
$test = $_POST["hashcode"];
if ($ttest != "")
{
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'couponcode' => $test);
echo json_encode($arr);
}
?>
我正在尝试使用Objective-C语言来检索此json并将其解析为NSDictionary。我目前正在使用JSON框架,但它不适合我。
NSHTTPURLResponse * response;
NSError * error;
NSString *post = @"hashcode=asdf1234fdsa";
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"www.ski-inndronten.nl/json.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSData *testJSON = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *jsonString = [testJSON JSONRepresentation];
NSLog(@"String = %@",jsonString);
NSDictionary *testDict = [jsonString JSONValue];
NSLog(@"testDict = %@",testDict);
我希望你能帮助我,因为我不知道我做错了什么。 (我正在输出NULL对象)
答案 0 :(得分:1)
确定有两个错误:
首先,您忘记在URL字符串前面添加“http://”。如果你不这样做,请求将失败,返回的数据为零。
第二,你发送的应用程序/ json内容类型不正确,如果这样做,php将返回无效的答案。只需删除此设置,返回的代码就是正确的。
顺便说一句,您可以通过记录返回的数据来促进调试,如下所示:
NSData *testJSON = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"%@",[[NSString alloc] initWithData:testJSON encoding:NSUTF8StringEncoding]);
如果您执行这两项更正,则会正确返回答案。