我之前从未使用过ASIHTTPRequest,也没有处理过以前从iPhone发布到Web服务的任何内容。我想最终将发布的变量保存到数据库中,但我不确定它们是否在此时正确发布。当我在Xcode中运行以下脚本时,我看到在调试窗口中记录了插入变量的正确html代码。我担心的是,当我在浏览器中访问页面时,我看不到同样的事情。我猜这是可以预料的,但我不完全确定。这就是我在做的事情:
string1 = [[NSString alloc] initWithString:@"Did this"];
string2 = [[NSString alloc] initWithString:@"come through?"];
NSString *urlString = @"http://www.myurl.com/post_test.php";
NSURL *url = [NSURL URLWithString: urlString];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:string1 forKey:@"String1"];
[request setPostValue:string2 forKey:@"String2"];
NSString *response = nil;
[request startSynchronous];
NSError *error = [request error];
if (!error) {
response = [request responseString];
NSLog(@"Response GOOD: %@", response);
}
else {
NSLog(@"Response BAD: %@", error);
}
这会正确打印带有上传变量的网页中的html代码,但是如果我在浏览器中转到页面,则php变量为空。这是一个小的PHP脚本:
<?php
$received = array();
$received = $_POST;
$print_received = print_r($received, TRUE);
echo "<pre>$print_received</pre>";
$var1 = $received['String1'];
$var2 = $received['String2'];
echo "The message received was: $var1 $var2</br>";
?>
我还没有添加mysql连接代码,因为我想先确保这个发布业务是成功的。
答案 0 :(得分:2)
如果您从发布的代码中获得了正确的响应,则表示您的代码正在运行。可能发生的情况是,在使用浏览器进行测试时,您没有使用POST
。
检查以确保$_POST[]
实际上包含数据首先。如果没有,大概你想输出一个有意义的错误。看起来你只是在构建一个可以玩的沙箱并熟悉ASIHTTPRequest,但是如果你的目标变得更复杂(并且你的代码变得面向公众),你会花一些时间来阅读如何消毒和在使用之前验证POST/GET
变量。
答案 1 :(得分:1)
正如您在问题中提到的数据库,我认为这不是您想要的。
查看Memcached。它允许您在系统中轻松存储和检索变量。
答案 2 :(得分:0)
我已经确认通过将变量写入文本文件来正确发布变量:
$file = "received_text.txt";
$fh = fopen( $file, 'a' ) or die("Cannot open file");
fwrite( $fh, $var1 );
fwrite( $fh, ", ");
fwrite( $fh, $var2 );
fwrite( $fh, "\n" );
fclose( $fh );
我现在可以继续了。