Устранение неполадок, преобразовывающих зависание POST из командной строки в php

У меня возникли проблемы с преобразованием моей команды curl в php.

Эта часть отлично работает.

CURL, которая добавляет запись в мою базу данных Parse.com:

curl -X POST \ -H "X-Parse-Application-Id: my_id" \ -H "X-Parse-REST-API-Key: api_id" \ -H "Content-Type: application/json" \ -d "{\"SiteID\":\"foundID\",\"dataUsedString\":\"foundUsage\",\"usageDate\":\"foundDate\", \"monthString\":\"foundMonth\", \"dayString\":\"foundDay\",\"yearString\":\"foundYear\"}" \ https://api.parse.com/1/classes/MyClass 

РЕШЕННЫЙ ОТВЕТ:

Я создал этот PHP-скрипт для репликации команды:

  <?php $ch = curl_init('https://api.parse.com/1/classes/MyClass'); curl_setopt($ch,CURLOPT_HTTPHEADER, array('X-Parse-Application-Id:my_id', 'X-Parse-REST-API-Key:api_id', 'Content-Type: application/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"SiteID\":\"foundID\",\"dataUsedString\":\"foundUsage\",\"usageDate\":\"foundDate\", \"monthString\":\"foundMonth\", \"dayString\":\"foundDay\",\"yearString\":\"foundYear\"}"); curl_exec($ch); curl_close($ch); ?> 

Вы пропустили некоторые важные конфигурации. Это набор CURL для отправки запроса с использованием POST, а второй – данные для отправки. (RAW DATA отправляется как строка в POSTFIELDS, те, которые вы отправляете массиву, – автоматически добавят заголовок «multipart / form-data»,

 $ch = curl_init('https://api.parse.com/1/classes/MyClass'); curl_setopt($ch,CURLOPT_HTTPHEADER, array( 'X-Parse-Application-Id:my_id', 'X-Parse-REST-API-Key:api_id', 'Content-Type: application/json' ) ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"SiteID\":\"foundID\",\"dataUsedString\":\"foundUsage\",\"usageDate\":\"foundDate\", \"monthString\":\"foundMonth\", \"dayString\":\"foundDay\",\"yearString\":\"foundYear\"}"); curl_exec($ch); curl_close($ch); 

НТН ðŸ™‚

Поскольку вы выполняете запрос POST вам также нужно сказать Curl:

 $postData = '{"SiteID":"foundID","dataUsedString":"foundUsage","usageDate":"foundDate", "monthString":"foundMonth", "dayString":"foundDay","yearString":"foundYear"}'; curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 

Вам также может потребоваться указать заголовок Content-Length :

 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'X-Parse-Application-Id: my_id', 'X-Parse-REST-API-Key: api_id', 'Content-Type: application/json', 'Content-Length: '.strlen($postData)) );