如何在PHP中通过CURL发布表单字段?

时间:2018-07-18 23:25:56

标签: php xml curl base64

我正在尝试将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说明。

enter image description here

这是我从API得到的响应:

enter image description here

有人知道我在做什么错吗?这让我发疯了!

1 个答案:

答案 0 :(得分:1)

文档说,该值是用户ID,“:”和密码的串联。这可能使措辞混乱。您应该删除这些空格,以编写代码:

$authorization = 'username:password';

该代码的C#示例表明它需要base64编码:

$authorization = base64_encode($authorization);

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

curl_setopt($ch, CURLOPT_USERPWD, $authorization);