Ваши данные неверны. Если вы ожидаете, что данные будут найдены в массиве $ _POST PHP, они должны выглядеть следующим образом:
const char *bytes = "mydata=Hello%20World";
Если вы хотите отправить данные XML, вам нужно установить другой тип содержимого HTTP. Например. вы можете установить
application/xml; charset=utf-8
Если вы не указали тип содержимого HTTP, тип по умолчанию
application/x-www-form-urlencoded
будет использоваться. И этот тип ожидает, что данные POST будут иметь тот же формат, что и в запросе GET.
Однако, если вы установите другой тип содержимого HTTP, например application / xml, эти данные не будут добавлены в массив $ _POST в PHP. Вам придется читать необработанные данные из входного потока.
Попробуйте это:
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);
Обратите внимание, что это работает, только если заголовок HTTP вашего POST не является application / x-www-form-urlencoded. Если это application / x-www-form-urlencoded, то PHP сам считывает все данные поста, декодирует их (разбивает на пары ключ / значение) и, наконец, добавляет их в массив $ _POST.