php - PHP CURL 在工作时有 400
问题描述
检查 URL 时:https ://i2.wp.com/jarek-kefir.org/wp-content/uploads/2019/04/pożar-katedry-notre-dame.jpg?ssl=1
我有结果状态码400
...
这是我的功能:
public function callAPI($url)
{
$curl = curl_init();
error_log('Checking url: ' . $url);
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
//'APIKEY: 111111111111111111111',
'Content-Type: application/json',
));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
// EXECUTE:
$result = utf8_decode(curl_exec($curl));
$result = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $result);
if (!$result) {
error_log('Connection Failure ' . $result . ' for url: ' . $url);
}
// Check if any error occurred
$error_msg = '';
$error_number = curl_errno($curl);
$error_info = curl_error($curl);
$info = curl_getinfo($curl);
$httpCode = $info['http_code'];
$request_ok = $httpCode == 200 || $httpCode == 201 || $httpCode == 204;
error_log('$httpCode: ' . $httpCode);
if (!$request_ok) {
$info = curl_error($curl);
$error_msg = $info ? $info : "Http code: " . $httpCode;
error_log('Error while checking url: ' . $url . ' : ' . $error_msg);
}
curl_close($curl);
return $error_msg;
}
但是当我手动检查它甚至通过命令行 curl 它工作正常。可能我在这里错过了 curl 的一些配置..
解决方案
呵呵,终于我发现这是因为一个波兰角色.. :)
推荐阅读
- javascript - 如何在Javascript中将日期时间从一个时区转换为另一个时区?
- apache - 为什么 Apache 不激活 Saxon/C 扩展?
- php - 根据密码隐藏内容
- python - 如何在 cython 中指定列表和元组类型
- sql-server - 字符串转换为有效日期
- laravel - laravel Route::resource 不能用于删除
- flutter - Flutter CustomScrollView 在没有足够项目时滚动
- pandas - 如何将数据帧(df)列的每个值的第一个数字提取到新数据帧(df1)
- powershell - 如何获取一个类的所有实例?
- jenkins - 如何根据管道参数值并行运行作业多次