Curl PHP - 400 错误无法满足请求

Posted

技术标签:

【中文标题】Curl PHP - 400 错误无法满足请求【英文标题】:Curl PHP - 400 Error The request could not be satisfied 【发布时间】:2021-05-12 09:34:57 【问题描述】:

我尝试通过 curl 更新日期。我使用 put 语句。我不知道为什么,但每次获得400 错误。

$data = fopen("test.csv", "c");
$ch = curl_init("https://merchants-connector-importercom/key/test.csv");

curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch,CURLOPT_HTTPHEADER, 
array( "x-api-key: fffff","Content-Type: application/json")); 
     
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($ch);
var_dump($content);
$decodedJson = json_decode($content, true);
curl_close($ch);
var_dump($decodedJson);

当我尝试这个时,var_dump 会生成这个输出:

string(903) " 400 ERROR 请求不能被满足。我们不能 此时连接到此应用程序或网站的服务器。那里 可能是流量过多或配置错误。稍后再试, 或联系应用程序或网站所有者。如果您将内容提供给 客户通过 CloudFront,您可以找到故障排除步骤和 通过查看 CloudFront 文档来帮助防止此错误。 由 cloudfront (CloudFront) 生成的请求 ID: vvNW1rlJyfMLF0tl8Nu3GMGc5K-deL2Os2hb_RENbOsv-GwtUAureg==“空”

我做错了什么?

【问题讨论】:

域应该是.com域吗? 【参考方案1】:

我找到了解决方案。问题是 csv.file 被设置为 curl 请求的普通文件。当你使用 curl 时,你需要设置一个 curlFile

 $cfile = new CurlFile($file,  'text/csv');
 $data = array('data-binary' => realpath($cfile->getFilename()));

【讨论】:

以上是关于Curl PHP - 400 错误无法满足请求的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab使用Axios或Curl请求发布/放入节点 - 无法写入资源 - 400错误

PHP CURL - 错误的请求发布 - 当 POSTFIELDS 非常大时

http请求400错误

Python post 请求在请求库中引发 400 'Bad Request' 错误,但适用于 cURL

Google 地理编码服务返回错误 400 错误请求

OAuth、PHP、Rest API 和 curl 给出 400 Bad Request