php - 如何在 PHP 中通过 CURL 发布表单字段?
问题描述
我正在尝试在我的网站上集成一个 API,它要求我发布一个以 base64 编码的授权字段。但是,这是说我做得不对。我想知道是不是因为我没有正确发布该字段。这是我到目前为止所做的。
$pro = '00000000000';
$host = 'http://www.saiasecure.com/irsec/getimginfo1.aspx?refNumber='.$pro;
$authorization = 'username : password';
$authorization = base64_encode($authorization);
$post = array(
'Authorization' => $authorization
);
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$return = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($return);
try
{
print_r($xml);
} catch(SoapFault $ex){
$ex->getMessage();
echo $ex;
}
这些是开发者提供的 API 说明。
这是我从 API 得到的响应:
有人知道我做错了什么吗?它快把我逼疯了!
解决方案
文档说该值是用户 ID、“:”和密码的串联。这可能是令人困惑的措辞。您应该删除这些空格,使您的代码:
$authorization = 'username:password';
代码示例显示C#
它需要 base64 编码:
$authorization = base64_encode($authorization);
根据 Xorifelse 的输入,让 curl 为您设置标题更简单:
curl_setopt($ch, CURLOPT_USERPWD, $authorization);
推荐阅读
- javascript - 为什么从函数返回的承诺解析为从该函数内部的 .then 返回的值
- dialogflow-es - 如何停止对话流总是返回应该将今天解析为明天的日期
- node.js - Socket.io 导致错误“错误:发送后无法设置标头。”
- wordpress - 如何覆盖子主题中的 woocommerce 小部件?
- java - 使用双括号初始化设置私有字段值
- android - ComboEdit - 如何在 Popup 事件上刷新项目?
- javascript - ie 11 中的异步生成器
- graphql - 最好将 prisma 对象通过上下文传递给解析器还是直接使用它?
- ruby-on-rails - Ruby 中带有“has”前缀的布尔约定
- android - 构建时无法识别 aar 中的约束布局属性