在file_get_contents
上使用代理路由时遇到了一些麻烦。当我将其与cURL
一起使用时,它可以工作,但不能与以下代码一起使用:
$headers = array('Content-Type: text/xml');
$url = "http://google.com/";
$proxy = 'http://xx.xxx.xxx.xxx:443';
$opts = [
"http" => [
'proxy' => $proxy,
"method" => "POST",
"header" => implode("\r\n", $headers),
'timeout' => 500,
"content" => $request,
],
];
$stream_context = stream_context_create($opts);
$data = file_get_contents($url, false, $stream_context);
return $data;
问题在于,该不会先打我的代理服务器,而是直接转到google.com。
当我将此代码与cURL一起使用时,它可以完美运行:
$handle = curl_init();
$url = "http://google.com";
$proxy = 'xx.xxx.xxx.xxx:443';
// Set the url
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_PROXY, $proxy);
$output = curl_exec($handle);
curl_close($handle);
echo $output;
谁能看到问题所在吗?
答案 0 :(得分:0)
我认为您使用了错误的协议
尝试使用:
$proxy = 'tcp://xx.xxx.xxx.xxx:443';
还要尝试将以下内容添加到$ opts数组中:
'request_fulluri'=>true