繁体   English   中英

使用curl无法发布到API

[英]Posting to API with curl not working

$headers = array();
$headers[] = 'Authorization: hmac ' .$websiteKey.':'.$hmac .':'.$nonce . ':'.$time;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl,CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);    
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);

var_dump($result);


curl_close($curl);

我有上面的代码,我想发布到一个api。 不知何故,它不起作用。 我尝试在结果变量上使用var_dump。 结果是:

string(117) "{"Message":"The request entity's media type 'application/x-www-form-urlencoded' is not supported for this resource."}"

知道为什么不将其发布到api吗?

$ post =的值

{"AmountDebit":10,"Currency":"EUR","Invoice":"testinvoice 123","Services":{"ServiceList":[{"Action":"Pay","Name":"ideal","Parameters":[{"Name":"issuer","Value":"ABNANL2A"}]}]}}

头:

$headers[] = 'Authorization: hmac ' .$websiteKey.':'.$hmac .':'.$nonce . ':'.$time;

如果在使用Curl进行POST调用时未指定Content-Type标头,则它将添加一个值为application/x-www-form-urlencoded

从《 Everything Curl》一书中

使用curl的-d选项进行发布将使其包含一个类似于Content-Type的默认标头:application / x-www-form-urlencoded。 这就是典型的浏览器将用于纯POST的内容。

许多POST数据接收者并不关心或检查Content-Type标头。

如果该标头对您来说不够好,那么您当然应该替换它,而应提供正确的标头。

根据您的请求判断,我想您需要在脚本顶部添加以下内容:

$headers[] = 'Content-Type: application/json';

但是,根据要发布到的确切API,这可能需要有所不同。

使用前是否已安装curl。 如果未安装,请尝试使用google进行Curl安装,并使用我的curl函数进行发布,以请求其100%正常工作-

public function curlPostJson() {
    $headers = [];
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Content-Length: ' .strlen(json_encode($paramdata));

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($paramdata));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
    $server_output = curl_exec($ch);
    curl_close($ch);
    return json_decode($server_output);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM