我现在正尝试使用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请求有什么问题?
答案 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));