2

如果我的网站上有一个 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只会被调用。

编辑——刚刚修复 (1),创建了一个受密码保护的目录并将 php 文件粘贴在那里。

  1. “这是一个字符串”没有在 php 文件中传递给 phpVar 并且不会显示在页面上

这是我在php中写的:

<?php

$blah = $_POST['phpVar'];

echo $blah;

?> 

谢谢你的帮助。

4

1 回答 1

0

这个过程可能会在几个不同的地方发生故障。

  1. 由于您试图在 ASIFormDataRequest 实例中设置文字,我们可以放心地假设它实际上包含该值。
  2. 下一个要验证的项目是 POST 实际上是在访问 PHP 页面(但不一定传递正确的值)。有几种方法可以做到这一点,但最简单的可能是查看 Web 服务器的访问日志。如何完成此操作将因服务器(即 Apache、IIS 等)而异。
  3. 如果脚本确实点击了页面,最后一步应该是验证传递了什么(如果有的话)请求参数。我建议您通过像这样的函数调用呼应它们来更广泛地查看所有请求值,而不是转储 $_POST 形式的奇异值:

.

<?php
var_dump($_REQUEST);
?>

这应该详细地打印出 $_GET、$_POST 和 $_COOKIE 中的所有内容,以防万一值没有通过 POST 发送,正如您所期望的那样。如果该值存在,访问它或修改发送请求的方式应该很简单,以便按预期交付。

于 2012-09-11T22:12:24.737 回答