開発環境がプロキシの内側で、HttpSocketがそのまま使えずに困ったので。
素人がかなりアドホックに修正したので、かなり乱暴な修正かもしれないけどとりあえず晒しておく。
使うときは、
$socket = new HttpSocket( aa( 'proxy', aa('host', '127.0.0.1', 'port', 8123) ) );
のようにすると良いかと。
======
$ diff -u http_socket_org.php http_socket.php --- http_socket_org.php 2008-12-19 11:16:01.000000000 +0900 +++ http_socket.php 2009-03-08 01:25:01.250000000 +0900 @@ -114,6 +114,10 @@ 'protocol' => 'tcp', 'port' => 80, 'timeout' => 30, + 'proxy' => array( + 'host' => null, + 'port' => null + ), 'request' => array( 'uri' => array( 'scheme' => 'http', @@ -191,6 +195,14 @@ if (isset($host)) { $this->config['host'] = $host; } + + // for proxy use. + if (!empty($this->config['proxy']['host']) && !empty($this->config['proxy']['port'])) + { + $this->config['host'] = $this->config['proxy']['host']; + $this->config['port'] = $this->config['proxy']['port']; + } + $cookies = null; if (is_array($this->request['header'])) { @@ -728,7 +740,14 @@ $request['uri'] = $this->parseUri($request['uri']); $request = array_merge(array('method' => 'GET'), $request); - $request['uri'] = $this->buildUri($request['uri'], '/%path?%query'); + + // if proxy use. switch buildUri() argument. + if (isset($this->config['proxy']['host']) && isset($this->config['proxy']['port'])) { + $request['uri'] = $this->buildUri($request['uri']); + } + else { + $request['uri'] = $this->buildUri($request['uri'], '/%path?%query'); + } if (!$this->quirksMode && $request['uri'] === '*' && !in_array($request['method'], $asteriskMethods)) { trigger_error(sprintf(__('HttpSocket::buildRequestLine - The "*" asterisk character is only allowed for the following methods: %s. Activate quirks mode to work outside of HTTP/1.1 specs.', true), join(',', $asteriskMethods)), E_USER_WARNING);
コメント