与往常一样,我搜索论坛,并搜索我的自己有点疯狂,但无法弄清楚我做错了什么。因此,我转向期待这个网站的伟大思想,希望找到答案。 我正在构建一个将与数据库进行通信的应用程序,并试图通过使用在线发现的各种示例来学习如何使用JSON检索数据并将其发布到数据库。我设法使用JSON从Web上检索数据并在TableView中显示它,但是当我尝试POST数据时没有任何效果。基本上,我有一个简单的php脚本,它应该将它接收到的数据写入文本文件(见下文)。写出JSON数据到一个简单的文本文件
<?php
//header('Content-type: application/x-json');
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = var_dump($_POST);
fwrite($fh, $stringData);
$stringData = "=== JSON Decoded ===";
fwrite($fh, $stringData);
$stringData = $_POST["tmp"];
fwrite($fh, json_decode($stringData));
$stringData = "=== JSON Decoded ===";
fwrite($fh, $stringData);
fclose($fh);
?>
问题是脚本似乎没有收到任何东西。发布到它时,它会创建一个看起来像这样的文件。所以它确实创建了文件和所有文件,但没有任何内容。
=== JSON Decoded ====== JSON Decoded ===
下面的代码是我在XCode中的POST方法。
-(IBAction)poststuff:sender{
NSString *stuffToPost = [[NSString alloc] initWithFormat:@"Work, damn you!"];
NSURL *jsonURL = [NSURL URLWithString:@"http://localhost:8888/iWish/json_post.php"];
NSData *postData = [stuffToPost dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSLog(@"Stuff I want to POST:%@", stuffToPost);
NSLog(@"Data I want to POST:%@", postData);
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:jsonURL];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error;
NSURLResponse *response;
NSData *serverReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data = [[NSString alloc] initWithData:serverReply encoding:NSUTF8StringEncoding];
NSLog(@"Raw Data:", data);
}
控制台看起来是这样的触发时的方法和写出来的空文本文件:
2010-10-04 14:10:16.666 iWish[38743:207] Stuff I want to POST:Work, damn you!
2010-10-04 14:10:16.668 iWish[38743:207] Data I want to POST:<576f726b 2c206461 6d6e2079 6f7521>
2010-10-04 14:10:16.673 iWish[38743:207] serverReply:
在我看来,数据是存在的,并格式化和诸如此类的东西,但由于某些原因没有得到发送或接收。这里希望在代码中有一些愚蠢的错误,因为我现在已经注意了两天了。
我很感激任何帮助。谢谢!
感谢您的答复。我尝试了代码,但它只在文本文件中写出[]。你提到我的帖子请求不是有效的JSON。这是为什么?我错过了什么? – Glitch 2010-10-04 13:11:38
不,如果你想使用json_decode(在你的例子中),POST请求也必须以JSON格式(..so远是我可以读取XCode,它不是)。 如果将$ _POST var更改为$ _GET var,并调用http:// localhost:8888/iWish/json_post.php?var = test&var2 = example?会发生什么?你在你的测试文件中看到有效的JSON字符串吗? – 2010-10-04 13:23:17
如果我将$ _POST更改为$ _GET并调用localhost:8888/iWish/json_post.php?var = test&var2 = example,则写出的测试文件如下所示:{“var”:“test”,“var2”: “例”}。 – Glitch 2010-10-05 09:34:38