你的数据有误。如果您希望在 PHP 的 $_POST 数组中找到数据,它应该如下所示:
const char *bytes = "mydata=Hello%20World";
如果要发送 XML 数据,则需要设置不同的 HTTP 内容类型。例如。你可能会设置
application/xml; charset=utf-8
如果未设置 HTTP Content Type,则使用默认类型
application/x-www-form-urlencoded
将会被使用。此类型期望 POST 数据具有与 GET 请求中相同的格式。
但是,如果您设置不同的 HTTP 内容类型(例如 application/xml),则该数据不会添加到 PHP 中的 $_POST 数组中。您必须从输入流中读取原始数据。
尝试这个:
NSString * str = [NSString stringWithFormat:@"<?xml version=\"1.0\"?>\n<mydata>%@</mydata>", data];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];
并在服务器上尝试以下 PHP:
$handle = fopen("php://input", "rb");
$http_raw_post_data = '';
while (!feof($handle)) {
$http_raw_post_data .= fread($handle, 8192);
}
fclose($handle);
请注意,只有当您的 POST 的 HTTP 标头不是 application/x-www-form-urlencoded 时,这才有效。如果是 application/x-www-form-urlencoded 那么 PHP 本身会读取所有的 post 数据,对其进行解码(将其拆分为键/值对),最后将其添加到 $_POST 数组中。