2015-02-09 2 views
0

Использование Parse.com и REST API. Я посылаю запрос PUT для обновления записи.Обновление отчетов, но это не так.

$url = 'https://api.parse.com/1/classes/Language/lXn2Jr8g3D'; 
$headers = array( 
    "Content-Type: application/json", 
    "X-Parse-Application-Id: " . $appId, 
    "X-Parse-REST-API-Key: " . $apiKey , 
); 
$objectData = '{"designation":"barfoo", "order":6}'; 
$rest = curl_init(); 
curl_setopt($rest,CURLOPT_URL,$url); 
curl_setopt($rest,CURLOPT_PUT,1); 
curl_setopt($rest,CURLOPT_POSTFIELDS,$objectData); 
curl_setopt($rest,CURLOPT_HTTPHEADER,$headers); 
curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($rest); 
echo $response; 
curl_close($rest); 

Это возвращает назад

{"updatedAt":"2015-02-09T22:28:57.676Z"} 

Я вижу запись, и я не вижу изменения, которые я просил. НО поле updatedAt действительно обновляется. На самом деле это единственное, что обновляется! Если я опускаю objectId из url и использую POST вместо PUT, вставка работает просто отлично.

+0

Излишне говорить, что команда точного скотча работает как шарм. – denispyr

+0

Не относится к вашей проблеме, но, пожалуйста, не делайте этого 'curl_setopt ($ rest, CURLOPT_SSL_VERIFYPEER, false);' :) –

ответ

0

Путь к использованию - использовать INFILE вместо POSTFIELDS, чтобы передавать данные (thx для sample code).

$url = 'https://api.parse.com/1/classes/Language/lXn2Jr8g3D'; 
$headers = array( 
    "Content-Type: application/json", 
    "X-Parse-Application-Id: " . $appId, 
    "X-Parse-REST-API-Key: " . $apiKey , 
); 
$objectData = '{"designation":"barfoo", "order":6}'; 
// ADDED THIS --------------------------------------------- 
//trasnform string to file 
$dataAsFile = tmpfile(); 
fwrite($dataAsFile, $objectData); 
fseek($dataAsFile, 0); 
// THIS ADDED --------------------------------------------- 


$rest = curl_init(); 
curl_setopt($rest,CURLOPT_URL,$url); 
curl_setopt($rest,CURLOPT_PUT,1); 
// REPLACED THIS --------------------------------------------- 
// curl_setopt($rest,CURLOPT_POSTFIELDS,$objectData); 
curl_setopt($rest, CURLOPT_INFILE, $dataAsFile); 
curl_setopt($rest, CURLOPT_INFILESIZE, strlen($objectData)); 
// THIS REPLACED --------------------------------------------- 
curl_setopt($rest,CURLOPT_HTTPHEADER,$headers); 
curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($rest); 
echo $response; 
curl_close($rest); 
Смежные вопросы