我创建了一个NSURLRequest将iPhone应用程序中的数据发布到服务器以继续PHP脚本.我的PHP脚本看起来像这样.
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$link = mysql_connect("localhost", "fffasfdas","Nfdsafafs") or die ("Unable to connect to database.");
mysql_select_db("muradsbi_mydatabase") or die ("Unable to select database.");
$sqlstatement= "INSERT INTO dbname (name,email) VALUES ('$name','$email')";
$newquery = mysql_query($sqlstatement, $link);
echo 'thanks for your register';
?>
Run Code Online (Sandbox Code Playgroud)
我NSURLRequst的创建如下.
NSString *myRequestString = @"&name=Hello%20World&email=Ohai2u";
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://www.google.com/"]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: myRequestData];
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
Run Code Online (Sandbox Code Playgroud)
但是,此站点无法从此应用程序获取数据并将其保存到数据库,但我知道它连接成功,因为我的应用程序能够从服务器获取响应数据.我不知道我的变量名是以错误的方式声明还是其他问题.我该如何解决?
sup*_*ell 53
您应该删除导入&,myRequestString问题可能content-type是没有发送正确的标头.尝试添加呼叫
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
Run Code Online (Sandbox Code Playgroud)
您也不应该传递nil错误,因此您可以看到客户端认为正在发生的事情.
不相关,但您的PHP代码对SQL注入攻击是开放的.
应当指出的是 ...
NSData *data = [NSData dataWithBytes: [myRequestString UTF8String]
length: [myRequestString length]];
Run Code Online (Sandbox Code Playgroud)
......非常糟糕,可能会导致模糊的错误.对于UTF8,无法保证编码字符串中的字节数与字符串中的字符数相同.
所以相反,你应该简单地使用:
NSData *data = [myRequestString dataUsingEncoding: NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50379 次 |
| 最近记录: |