Guzzle使用代理请求

时间:2015-08-31 11:18:20

标签: php curl guzzle

我想在guzzle中请求页面时使用代理。下面的代码遇到警告:

Warning: curl_setopt_array(): Array keys must be CURLOPT constants or equivalent integer values in .../guzzle/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 56 
Warning: curl_setopt_array(): Array keys must be CURLOPT constants or equivalent integer values in .../guzzle/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 56
Warning: curl_setopt_array(): Array keys must be CURLOPT constants or equivalent integer values in .../guzzle/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 56
cURL error 0: The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL was unable to rewind the body of the request and subsequent retries resulted in the same error. Turn on the debug option to see what went wrong. See https://bugs.php.net/bug.php?id=47204 for more information. (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
Run-time warning: curl_setopt_array(): Array keys must be CURLOPT constants or equivalent integer values in .../guzzle/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 56

此代码有什么问题:

this->method = 'GET';
$this->request = new Request($this->method, $this->url);
$this->options = [
'base_uri'     => $this->base_uri,
'timeout'      => 30,
'curl'  => [
        'CURLOPT_PROXY' => '*.*.*.*',
        'CURLOPT_PROXYPORT' => 80,
        'CURLOPT_PROXYUSERPWD' => '*:*',
   ],
'headers' => [
        'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36'
   ]
];
$this->response = $this->send($this->request, $this->options);// $this extends Client Class

1 个答案:

答案 0 :(得分:0)

在尝试修复我遇到的代理相关问题时发现了这一点,但这似乎很容易解决。

在错误消息中:

  

运行时警告:curl_setopt_array():数组键必须是CURLOPT常量或等效的整数值

在您的代码中:

'curl'  => [
    'CURLOPT_PROXY' => '*.*.*.*',
    'CURLOPT_PROXYPORT' => 80,
    'CURLOPT_PROXYUSERPWD' => '*:*',
],

您已经创建了常量字符串,因此它们不会作为有效键传递。