【发布时间】: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]);
}
这里有几个问题:
- 即使我输入了错误的凭据,
requestFinished也只会被调用。
编辑 -- 刚刚修复 (1),创建了一个受密码保护的目录并将 php 文件粘贴在那里。
- “这是一个字符串”没有被传递到 php 文件中的 phpVar 并且不会显示在页面上
这是我用php写的:
<?php
$blah = $_POST['phpVar'];
echo $blah;
?>
感谢您的帮助。
【问题讨论】:
-
一次调试一步。首先从 PHP 返回一个虚拟字符串,例如“Hello world”。
-
当然我已经这样做了。在页面上回显任何字符串都可以正常工作。
-
专业提示:NSString 只是字符串的包装器。只需将字符串编码为 ASCII 字节(或其他),然后在 post 变量中传递这些字节。
-
服务器上的 php 脚本有多大?将其添加到您的问题中,如果它太大,请将其放在 pastebin.com 或其他地方。
-
为此,myfile.php 需要修改自身(或将
$_POST['phpVar']的值写入配置文件,当下一个调用页面时读取该配置文件)。在脚本的最后你需要输出一些像echo "<html><head>..."; echo $_POST['phpVar']; echo "</body></html>";这样的html。
标签: php objective-c post nsstring asiformdatarequest