Не удается получить JSON POST через PHP: cURL

Я попытался реализовать следующий PHP-код для POST JSON через PHP: cURL (НЕКОТОРЫЙ ВЕБ-САЙТ FORCE.COM — это тег, обозначающий URL-адрес, который я хочу отправить):

$url = "<SOME FORCE.COM WEBSITE>";

$data =
'application' =>
array
(
    'isTest' => FALSE,
    key => value,
    key => value,
    key => value,
    ...
)

$ch = curl_init($url);
$data_string = json_encode($data);
curl_setopt($ch, CURLOPT_POST, true);
//Send blindly the json-encoded string.
//The server, IMO, expects the body of the HTTP request to be in JSON
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array
(
    'Content-Type:application/json',
    'Content-Length: ' . strlen($data_string)
)
);

$result = curl_exec($ch);

curl_close($ch);

print_r($result);

echo '<pre>';
echo $_POST;
$jsonStr = file_get_contents('php://input'); //read the HTTP body.
var_dump($jsonStr);
var_dump(json_decode($jsonStr));
echo '</pre>';

Вывод вышеизложенного следующий:

"Your TEST POST is correct, please set the isTest (Boolean) attribute on the application to FALSE to actually apply."
Arraystring(0) ""
NULL

ОК, приведенное выше подтверждает, что я правильно отформатировал данные JSON с помощью json_encode, а ВЕБ-САЙТ SOME FORCE.COM подтверждает, что значение «isTest» равно FALSE. Однако я ничего не получаю от «var_dump($jsonStr)» или «var_dump(json_decode($jsonStr))». Я решил просто проигнорировать этот факт и установить «isTest» в FALSE, предполагая, что я не получаю никаких данных JSON, потому что я установил «isTest» в TRUE, но когда я установил «isTest» в FALSE, возникает хаос:

[{"message":"System.EmailException: SendEmail failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Missing body, need at least one of html or plainText: []\n\nClass.careers_RestWebService.sendReceiptEmail: line 165, column 1\nClass.careers_RestWebService.postApplication: line 205, column 1","errorCode":"APEX_ERROR"}]
Arraystring(0) ""
NULL

Я по-прежнему не получаю никаких данных JSON, и, в конечном счете, электронное письмо не может быть отправлено. Я считаю, что проблема связана с пустым телом электронного письма, потому что ничего не приходит от «var_dump ($ jsonStr)» или «var_dump (json_decode ($ jsonStr))». Можете ли вы помочь мне получить JSON POST? Я был бы очень признателен за любые подсказки, предложения и т. д. Спасибо.


person bhlee90    schedule 27.02.2013    source источник
comment
Проверьте заголовки вашего ответа, например Content-type!   -  person Bigood    schedule 27.02.2013
comment
Где находится $jsonStr? Куда вы его назначаете?   -  person Ghigo    schedule 27.02.2013


Ответы (1)


Я решил этот вопрос самостоятельно. Я не был уверен, правильно я это делаю или нет, но оказалось, что мой код идеален. Я постоянно обновлял свой веб-сайт, откуда я размещаю сообщения на НЕКОТОРОМ ВЕБ-САЙТЕ FORCE.COM. Я считаю, что у людей, управляющих веб-сайтом SOME FORCE.COM, были проблемы с их стороны. В том, что я сделал, не было ничего плохого. По какой-то причине я получил код 202 и какую-то тарабарщину к нему. Я был бы рад показать результат, но я не хочу снова публиковать сообщение ради людей, управляющих НЕКОТОРЫМ ВЕБ-САЙТОМ FORCE.COM, на котором я публикую сообщение. Спасибо, ребята, за вашу помощь.

person bhlee90    schedule 01.03.2013