【问题标题】:Pass NSString to PHP POST Variable将 NSString 传递给 PHP POST 变量
【发布时间】:2012-07-16 19:01:02
【问题描述】:

如果我的网站上有一个 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;

?> 

感谢您的帮助。

【问题讨论】:

  • 一次调试一步。首先从 PHP 返回一个虚拟字符串,例如“Hello world”。
  • 当然我已经这样做了。在页面上回显任何字符串都可以正常工作。
  • 专业提示:NSString 只是字符串的包装器。只需将字符串编码为 ASCII 字节(或其他),然后在 post 变量中传递这些字节。
  • 服务器上的 php 脚本有多大?将其添加到您的问题中,如果它太大,请将其放在 pastebin.com 或其他地方。
  • 为此,myfile.php 需要修改自身(或将$_POST['phpVar'] 的值写入配置文件,当下一个调用页面时读取该配置文件)。在脚本的最后你需要输出一些像echo "&lt;html&gt;&lt;head&gt;..."; echo $_POST['phpVar']; echo "&lt;/body&gt;&lt;/html&gt;";这样的html。

标签: php objective-c post nsstring asiformdatarequest


【解决方案1】:

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

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

.

<?php
var_dump($_REQUEST);
?>

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

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2011-06-20
    • 2013-06-09
    • 2013-02-19
    相关资源
    最近更新 更多