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


ASIHTTPRequest - Response Correct in Debug Window but Null in Browser

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

如果您从发布的代码中得到了正确的响应,则表示您的代码正在工作。可能发生的情况是,在使用浏览器进行测试时,您没有使用POST

检查以确保$_POST[]实际上首先包含数据。如果没有,大概您希望输出一个有意义的错误。看起来你只是在构建一个沙盒来玩和熟悉ASIHTTPRequest,然而,如果你的目标变得更加复杂(并且你的代码变得面向公众),你会想花一些时间来阅读如何在使用POST/GET变量之前对其进行净化和验证。

正如您在问题中提到的数据库,我认为这不是您想要的。

查看Memcached。它允许您轻松地在系统中存储和检索变量。

我已经通过将变量写入文本文件来确认变量被正确发布:

$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 );

我现在可以继续了。