【问题标题】:Sending iOS string to PHP将 iOS 字符串发送到 PHP
【发布时间】:2014-08-04 09:14:33
【问题描述】:

我正在尝试让 iPhone 应用程序向我的网络服务器发送一个字符串。在我在我的 php 中打印出 $_POST 的那一刻,数组是空的。

这是我目前正在尝试的;

    //NSString *query = @"SELECT name FROM users";
    NSString *query = @"select=name&from=users";

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://localhost/www/service.php"]];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:[query dataUsingEncoding:NSUTF8StringEncoding]];

    [NSURLConnection connectionWithRequest:request delegate:self];

在 php 脚本中,我只是简单地执行 print_r($_POST);我没有收到错误消息,只有一个空数组。我究竟做错了什么?我曾尝试分别访问这两个字段,但它也不起作用 ($POST['select'];)

【问题讨论】:

标签: php ios webserver


【解决方案1】:

当您说 print_r 打印出一个空数组时,您的意思是它在浏览器中打印出一个空数组吗?如果是这种情况,请不要担心 - 它并不是要打印任何东西。我正在做类似的事情,并意识到我以错误的方式调试它。

当你在 xcode 中运行你的模拟器时,你的 php 脚本会被调用并且 $_POST 会有一个值。如果您此时 print_r 将暂时保存您的两个字段的值(但无法在浏览器上看到它)。如果你添加一些 NSLogs 并在 xcode 中打印出响应,你会看到数组不是空的。

我想说的是 - 你应该调试它的唯一方法应该是在 xcode 中,不要看你的浏览器。

试试这个以在日志中查看您的回复(这是之前发布的 - 请参阅您第一条评论中的链接);

    NSError *err;
    NSURLResponse *response;

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request      returningResponse:&response error:&err];

    NSString *resSrt = [[NSString alloc]initWithData:responseData encoding:NSASCIIStringEncoding];

    //This is for Response
    NSLog(@"got response==%@", resSrt);

    if(resSrt)
    {
        NSLog(@"got response");
    }
    else
    {
        NSLog(@"faield to connect");
    }

【讨论】:

  • 有道理……我觉得很傻。我想我不太确定整个后期过程是如何真正运作的,也没有足够地阅读它。我在日志中看到的响应包含我的两个字段,所以我猜它正在工作。非常感谢!
  • 我不认为这是一个愚蠢的问题。我也被困在这上面的时间最长。我想这是一个非常基本的问题,但我相信其他人也看到了这一点。
【解决方案2】:

尝试使用$_REQUEST。可能是$_POST 不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多