3

クライアントを制御するために file_get_contents 関数を使用しています (例http://ip:port/?light=on)

ブラウザで対応するコマンドを使用すると機能しますが、同じ url を file_get_contents 関数と組み合わせて使用​​すると機能しません。

リクエストを Wireshark すると、ブラウザが http/1.1 を使用しており、file_get_contents が http/1.0 を使用していることに気付きました。

http のバージョンが私のコードが動作しない問題だと思います。

file_get_contents 関数でこのバージョンの http を変更するにはどうすればよいですか? またはそれを回避しますか?

4

1 に答える 1

5

コンテキストを使用して HTTP バージョンを設定できます。

$context = stream_context_create(array('http'=>array('protocol_version'=>'1.1')));
file_get_contents('http://ip:port/?light=on', false, $context);

コンテキスト オプションの完全なリストも参照してください http://www.php.net/manual/en/context.http.php

サーバーがチャンクエンコーディングを使用している場合は、PHP 5.3 以降を使用する必要があることに注意してください。

于 2012-04-23T13:12:34.623 に答える