ASIHTTPRequest - 在调试窗口中响应正确但在浏览器中为空

时间:2012-01-09 20:25:13

标签: php iphone asihttprequest

我之前从未使用过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连接代码,因为我想先确保这个发布业务是成功的。

3 个答案:

答案 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 );

我现在可以继续了。