一如既往,我在论坛上搜索并自己谷歌了一番,但仍然无法弄清楚我做错了什么。因此,我转向在这个网站上经常出现的伟大思想,希望能找到答案。 我正在构建一个应用程序,将与数据库通信,并尝试学习如何使用JSON通过iPhone检索和发布数据到数据库,使用在网上找到的各种示例。我已成功使用JSON从Web检索数据并在tableview中显示它,但是当我尝试POST数据时,似乎什么都不起作用。 基本上,我有一个简单的php脚本,应该将接收到的数据写入文本文件(见下文)。
<?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:
我觉得数据已经存在,格式也没问题,但出于某种原因没有被发送或接收。希望只是代码中某个愚蠢的错误,因为我已经盯着它看了两天。
如果有任何帮助,我将不胜感激。谢谢!