将NSString传递给PHP POST变量

时间:2012-07-16 19:01:02

标签: php objective-c post nsstring asiformdatarequest

如果我的网站上有一个php文件,我怎样才能将NSString传递给POST变量(带有objective-c),以便我可以将它回显到页面上?我是php新手,很抱歉,如果这很明显。

使用ASIFormDataRequest

NSURL *myURl = [[NSURL alloc] initWithString:@"http://www.mysite/something.php"];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:myURl];

[request setDelegate:self];
[request setUsername:@"username"];
[request setPassword:@"password"];
[request setPostValue:@"This is a string" forKey:@"phpVar"];

[request startAsynchronous];

委托方法调用:

-(void)requestFailed:(ASIHTTPRequest *)request
{
    NSError *error = [request error];
    NSLog(@"Failed %@ with code %d and with userInfo %@",[error domain],[error code],[error userInfo]);
}

-(void)requestFinished:(ASIHTTPRequest *)request
{
    NSLog(@"Finished : %@",[request responseString]);

}

这里有几个问题:

  1. 即使我输入了错误的凭据,也只会调用requestFinished
  2. 编辑 - 刚修好(1),创建了一个受密码保护的目录并将php文件粘贴在那里。

    1. “这是一个字符串”未在php文件中传递给phpVar而且不会显示在页面上
    2. 这是我在php中写的:

      <?php
      
      $blah = $_POST['phpVar'];
      
      echo $blah;
      
      ?> 
      

      感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这个过程可能有几个不同的地方可能会崩溃。

  1. 由于您尝试在ASIFormDataRequest实例中设置文字,我们可以安全地假设它实际上包含该值。
  2. 要验证的下一个项目是POST实际上正在访问PHP页面(但不一定要传递正确的值)。有几种方法可以实现此目的,但最简单的方法可能是查看Web服务器的访问日志。如何实现这一点取决于服务器(即Apache,IIS等)。
  3. 如果脚本确实正在访问页面,则最后一步应该验证通过哪些(如果有)请求参数。而不是从$ _POST中转出单数值,我建议你通过函数调用回显它们来更广泛地查看所有请求值:
  4. <?php
    var_dump($_REQUEST);
    ?>
    

    这应该详细打印$ _GET,$ _POST和$ _COOKIE中的所有内容,这可以很方便,以防万一这些值没有像你期望的那样通过POST发送。如果该值存在,则访问它或修改请求的发送方式应该是微不足道的,以便按预期交付。