PHP HTTP 426-file_get_contents与curl

时间:2020-09-25 07:39:43

标签: php http curl file-get-contents php-curl

我有一个简单的PHP脚本,该脚本将带有一些参数的GET请求发送到外部API,并作为响应接收一些json数据。

我为此使用了file_get_contents,它在过去的几个月中一直有效。

示例:

$url = 'https://example.com?param1=xxx&param2=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;
}

我的问题是:

  • 什么会导致这种行为?
  • 这两种方法到底有什么区别?
  • 我应该一直使用curl吗?
  • 使用file_get_contents时是否可以防止此问题?

我认为服务器上的任何内容均未更改。我也在本地进行了测试,它具有相同的问题/解决方案,所以我猜是 外部服务器/ API有所更改。

我正在使用PHP7。

0 个答案:

没有答案
相关问题