2012-03-22 17 views
8

HTTPリクエストのコンテンツタイプはどのように設定しますか?HTTPリクエスト「Content-Type」の設定

私はこれ試してみた:

$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レスポンスで?

+0

はい、私は知っていますが、私の要求で 'Content-Type:application/xml'レスポンスを得るために何を設定する必要がありますか? – Michiel

+0

結果は、リクエストではなくHTTP **レスポンス**です。あなたはリクエストのコンテンツタイプを設定する方法を尋ねていますか、あるいはレスポンスにXMLを提供するようにサーバに要求する方法を尋ねていますか? – Quentin

+0

Acceptヘッダー(コンテンツタイプヘッダーではありません)を設定する必要があります。次に、サーバーは複数の応答タイプをサポートし、どのヘッダーを使用するかを決定するためにacceptヘッダーを使用する必要があります。サーバーがそれをしているかどうか知っていますか? – Quentin

答えて

24

私はヘッダーは、その要素のキーに満ちているプレーンな配列でなければならないと信じて:値ヘッダではなく、連想配列:

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

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

これは、あなたが受け入れるタイプを設定curl_setopt() documentation.

+0

お試しいただきありがとうございますが、依然として同じ結果です。または何かをクリアする必要がありますか? Coockies、キャッシュ、... – Michiel

+0

これはHTTPレスポンスですか?あなたはあなたの要求にcontent-typeヘッダーを送ります。これは、応答するサーバーが同じコンテンツタイプを返信することを意味しません。 –

+0

* WizTools *で同じリクエストを試しましたが、サーバーは 'application/xml' Content-Typeを返すので、サーバーは適切な応答を送信できます。カスタムPHPで試してみると、 'Content-Type'設定を送信することはできません。 – Michiel

2

に指定されていますあなたの要求(そしてそのためにMichaelの答えを使用してください、あなたは直接質問に答えるとして彼の答えを数える必要があります)。これは、サーバーがそのコンテンツタイプで再起動することを強制するものではありません。

要求のもう一方の端が静的ファイルの場合、Webサーバーがapplication/xmlのMIMEタイプでそのファイルを送信していることを確認する必要があります。 .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の返品をリクエストしています。その環境を複製したい場合は、カール要求で送信しているすべてのヘッダを送信します。 1つの推測では、ユーザーエージェントが機能している可能性があります。

+0

この貴重な答えをありがとう。だから、要求はそのままで、それはうまく動作していないサーバーですよね? – Michiel