首页 > 解决方案 > 如何在 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 得到的响应:

在此处输入图像描述

有人知道我做错了什么吗?它快把我逼疯了!

标签: phpxmlcurlbase64

解决方案


文档说该值是用户 ID、“:”和密码的串联。这可能是令人困惑的措辞。您应该删除这些空格,使您的代码:

$authorization = 'username:password';

代码示例显示C#它需要 base64 编码:

$authorization = base64_encode($authorization);

根据 Xorifelse 的输入,让 curl 为您设置标题更简单:

curl_setopt($ch, CURLOPT_USERPWD, $authorization);

推荐阅读