【问题标题】:Unable to POST data TO REST API Using PHP CURL but it work fine with Postman无法使用 PHP CURL 将数据发布到 REST API,但它与 Postman 一起工作正常
【发布时间】:2022-01-25 00:30:03
【问题描述】:

我正在尝试使用 PHP/CURL 将数据发布到 REST API,但它似乎无法正常工作,因为我收到 301 Moved Permanently 错误,但它适用于 Postman。这是我从 Postman 生成的 PHP CURL 的 sn-p

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'api url',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('text' => 'test'),
CURLOPT_HTTPHEADER => array(
'api_key: key',
'Content-Type:application/json',
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

它总是返回 301 Moved 永久,请注意,如果我更改 API 密钥,我会收到未经授权的错误,这意味着它会命中服务器,但我不确定我缺少什么,我尝试了多个标题组合。

在这方面的任何帮助将不胜感激。

【问题讨论】:

标签: php rest postman php-curl


【解决方案1】:

引用 PHP 手册:

CURLOPT_POSTFIELDS:此参数可以作为 urlencoded 传递 像 'para1=val1&para2=val2&...' 这样的字符串或带有字段的数组 名称作为键,字段数据作为值。如果 value 是一个数组,则 Content-Type 标头将设置为 multipart/form-data。

由于您使用 array,因此您需要使用 multipart

看到这个帖子:curl POST format for CURLOPT_POSTFIELDS

【讨论】:

  • ,我正在测试它,但似乎它不起作用
  • 301 错误有点奇怪。您确定网址正确且不会自动重定向到另一个网址吗?
  • 是的。它适用于邮递员。如果你愿意,我可以分享你的收藏
  • 邮递员可能正在做一些不同的事情,你需要了解它是什么......
猜你喜欢
  • 2021-09-21
  • 2018-03-04
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多