PUT Bigcommerce (уровень запасов) с использованием PHP / CURL — ОШИБКА 415 Недопустимый тип входного контента

Доброе утро,

Я пытаюсь обновить уровень запасов SKU. Я использую этот URL... (с моим магазином)

https://mystore.mybigcommerce.com/api/v2/products/76/skus/3.json

Это работает (если я зайду сюда и введу учетные данные, я увижу данные GET об этом SKU.

Теперь информация об обновлении уровня запасов @ http://developer.bigcommerce.com/docs/api/v2/resources/products/skus#PUT.products.id.skus.id.json

Теперь мой код выглядит следующим образом...

//Data to Update 
$StockdataRAW = array('inventory_level' => 1230);
//Data to update (JSON encoded)
$Stockdata = json_encode($StockdataRAW);
//See the JSON String
var_dump($Stockdata);

$api_url = $BC_Api_Path.'/products/76/skus/3.json';
//Display URL created to test 
echo '<a href="'.$api_url.'">'.$api_url.'</a>';

$ch = curl_init(); 
curl_setopt( $ch, CURLOPT_URL, $api_url ); 
curl_setopt( $ch, CURLOPT_HTTPHEADER, array ('Accept: application/json', 'Content-        Length: 0') );                                   
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 ); 
curl_setopt( $ch, CURLOPT_USERPWD,  $BC_Api_User.":".$BC_Api_Token ); 
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $Stockdata);  
$response = curl_exec( $ch );   

//Just a dump of the response
echo'<pre>';
var_dump($response);
echo'</pre><hr>';

//decode the JSON
$result = json_decode($response); 
print_r($result);

Я также попытался изменить эту строку...

 curl_setopt($ch, CURLOPT_POSTFIELDS, $Stockdata); 

To...

 curl_setopt($ch, CURLOPT_POSTFIELDS, $StockdataRAW); 

&

 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($StockdataRAW));

&

 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($Stockdata));

Ошибка, которую я получаю в своем ответе VAR_DUMP, IS....

string '[{"status":415,"message":"The specified input content type is not valid."}]' (length=75)

Что я делаю неправильно? Я не могу понять это! Спасибо заранее.


person Matt The Ninja    schedule 11.12.2013    source источник


Ответы (1)


Ты пробовал

 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json', 'Accept: application/json', 'Content-Length: 0'));

Также изменение Content-Length на значение, отличное от 0.

person LisaK1308    schedule 11.12.2013
comment
Привет, Лиза, спасибо за это. Кажется, помогло, но теперь я получаю эту ошибку. string '[{"status":400,"message":"A body is required for this request but was not supplied."}]' (length=86) - person Matt The Ninja; 11.12.2013
comment
Если я изменю Content-Length на 50, например, я получу... boolean false return - person Matt The Ninja; 11.12.2013
comment
РЕШЕНО! Использовали ваш код, но полностью удалили часть содержимого, и теперь это работает! - person Matt The Ninja; 11.12.2013