发送http post请求时发生错误

时间:2013-12-08 20:03:08

标签: php post nsurlconnection httprequest nsurlrequest

我使用此方法将post请求发送到我的服务器并将数据保存到sql数据库 但是我有一个问题,当数据保存到数据库时我会遗漏一些字符 例如我有这个字符串“example post ++ request ++” 当收到数据库字符串更改“示例发布请求”时,缺少+加号 这是我的代码

xcode的

NSString *STR = @"mystring=example post ++ request ++";
NSData *PostData = [STR dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://MySiteUrl.com/example.php"]];

    [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:PostData];
    [request setHTTPMethod:@"POST"];

    NSError *error = nil;
    NSURLResponse *response = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

php code

$STR = $_POST['mystring'];

          header ('Content-Type: text/html; charset=UTF-8'); 
$con    = mysql_connect("localhost","xxxxxx","xxxx");
          mysql_select_db("xxxxxxx", $con);
          mysql_query("SET NAMES utf8");

$STR = trim($STR);

 mysql_query("INSERT INTO `xxxxxxx`.`table` (`id`, `mystring`) VALUES (NULL, '$STR');");

1 个答案:

答案 0 :(得分:1)

记住+,在URL中,表示空格。如果你想传递一个+符号,那么你必须对它进行编码,我认为你的xcode是通过UTF8格式进行编码的。在POST中,请求参数被视为请求主体中的查询字符串。因此,调试您的PHP代码并确保一旦您的PHP收到该数据,然后仍然保持UTF8。如果不是那么只需在php中使用urlencode(字符串$ str)来转换它。我认为您的问题在于编码,您需要调试代码以准确识别哪个部分没有正确编码。好问题,祝你好运