Установить HTTP-запрос "Content-Type" - PullRequest
9 голосов
/ 22 марта 2012

Как установить тип содержимого HTTP-запроса?

Я пробовал это:

$headers['Accept'] = 'application/xml';
$headers['Content-Type'] = 'application/xml';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

И вот результат:

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html;charset=UTF-8
Date: Thu, 22 Mar 2012 14:04:36 GMT

но пока не повезло ...
Что мне нужно сделать, чтобы получить Content-Type: application/xml в моем HTTP-ответе?

Ответы [ 2 ]

27 голосов
/ 22 марта 2012

Я считаю, что заголовки должны быть простым массивом, элементы которого являются полным ключом: заголовки значений, а не ассоциативный массив:

$headers = array();
$headers[] = 'Accept: application/xml';
$headers[] = 'Content-Type: application/xml';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Это указано в документации curl_setopt().

2 голосов
/ 22 марта 2012

Вы устанавливаете тип принятия для своего запроса (и для этого используете ответ Майкл , вы должны считать его ответ ответом на прямой вопрос, потому что это так). Это не означает, что сервер соответствует этому типу контента.

Если другой конец запроса является статическим файлом, вы должны убедиться, что ваш веб-сервер отправляет этот файл с типом MIME application / xml. Если это заканчивается на .xml, то и Apache, и IIS уже сделают это. Если это нестандартное расширение файла, но вы хотите, чтобы оно отправлялось как application / xml, вам нужно будет, чтобы менеджер сервера установил httpd.conf или .htaccess, чтобы добавить тип mime для файл. В IIS вы используете инструменты администратора GUI, чтобы сделать то же самое, добавив mime-тип для расширения файла как application / xml.

Если другой конец запроса является языком сценариев на стороне сервера, таким как PHP, Perl, Python, ColdFusion, ASP, ASP.net и т. Д., И т. Д., То для сценария необходимо использовать соответствующий метод / функцию на этом языке вызывается для вывода заголовка типа контента и установки его в application / xml.

Обновление: в комментариях вы говорите, что используете WizTools для отправки запроса, который действительно возвращает application / xml. Если вы хотите клонировать эту среду, отправьте ВСЕ заголовки, которые она отправляет, в вашем запросе curl. Можно предположить, что пользовательский агент может быть в игре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...