使用cURL PHP的PUT请求返回错误415

时间:2018-02-12 13:12:08

标签: php curl

我现在正尝试使用cURL PHP执行PUT请求。

不幸的是,我收到错误" HTTP状态415 - 不支持的媒体类型"。 这是我的代码:

$ch = curl_init();

$proxy = 'api.test.sandbox.mobile.de';
$proxy_port = "8080";

$loginpassw = 'XXX:YYY';

$url='https://services.mobile.de/seller-api/sellers/1086/ads/509939';

$headers = array();
$headers[] = "Content-type: application/json";

$data = array(
    'mileage' => '10000',
);

curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $loginpassw);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

$data = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
echo $data;

curl_close($ch);

py请求有什么问题?

1 个答案:

答案 0 :(得分:1)

根据他们的API,您需要以JSON或XML格式发送数据并指定Content-Type标头 https://services.mobile.de/docs/seller-api.html#_media_types

因此设置标题为:

 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/vnd.de.mobile.api+json');  

将POSTFIELDS更改为

  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));