我有一个简单的PHP脚本,该脚本将带有一些参数的GET请求发送到外部API,并作为响应接收一些json数据。
我为此使用了file_get_contents
,它在过去的几个月中一直有效。
示例:
$url = 'https://example.com?param1=xxx¶m2=yyy';
$data = file_get_contents($url);
突然它停止工作并出现以下错误:
failed to open Stream: HTTP request failed!
HTTP1/1 426 Upgrade Required
我将其替换为cURL
,并且可以正常工作:
function curlGet($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
我的问题是:
file_get_contents
时是否可以防止此问题?我认为服务器上的任何内容均未更改。我也在本地进行了测试,它具有相同的问题/解决方案,所以我猜是 外部服务器/ API有所更改。
我正在使用PHP7。