1

問題が発生しています。cURLでPOSTメソッドを使ったWebサービスを扱っています。GZIP,DEFLATE でリクエストを圧縮しようとしています。3行目を見ると、これがどのように行われたかです。

     $x = curl_init("http://url");
  curl_setopt($x, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  **curl_setopt($x, CURLOPT_ENCODING, 'Accept-Encoding: gzip,deflate');** 
  curl_setopt($x, CURLOPT_POST, 1);
  curl_setopt($x, CURLOPT_POSTFIELDS, $inputdata);
  curl_setopt($x, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($x, CURLOPT_RETURNTRANSFER, 1);
  $data = curl_exec($x);

HTTP/1.1 200 OK という応答が返ってきました。 Date: Mon, 22 Oct 2012 16:19:23 GMT Server: Resin/1.11.14 Content-Type: text/xml; charset=UTF-8 Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 2088

ただし、Web サービス プロバイダーによると、圧縮されていません。私は何を間違っていますか?

4

1 に答える 1

4

CURLOPT_ENCODINGを設定するときに完全なヘッダーを入れる必要はありません。空の文字列に設定するだけで、curl はサポートされているエンコーディングを入れます。

curl_setopt($x, CURLOPT_ENCODING, '')
于 2012-10-23T08:18:08.333 に答える