0

PHPを介してJSONをPOSTするために次のPHPコードを実装してみました:cURL(SOME FORCE.COM WEBSITEは、POSTする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

OK、上記は、json_encodeを使用してJSONデータを正しくフォーマットしたことを確認し、SOMEFORCE.COMWEBSITEは'isTest'の値がFALSEであることを確認します。ただし、「var_dump($ jsonStr)」または「var_dump(json_decode($ jsonStr))」から何も取得されません。'isTest'をTRUEに設定したため、JSONデータが取得されないと仮定して、その事実を無視し、'isTest'をFALSEに設定することにしましたが、'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を取得するのを手伝ってもらえますか?ヒントや提案などをいただければ幸いです。ありがとうございます。

4

1 に答える 1

0

私は自分でこの質問を解決しました。これを正しく行っているかどうかはわかりませんでしたが、私のコードは完璧でした。いくつかのFORCE.COMWEBSITEに投稿しているところから、自分のWebサイトを更新し続けました。いくつかのFORCE.COMウェブサイトを管理している人々は彼らの側で問題を抱えていたと思います。私がしたことには何も問題はありませんでした。どういうわけか、私はコード202とそれに付随するいくつかのぎこちないテキストを手に入れました。出力を表示できれば幸いですが、投稿先のFORCE.COM WEBSITEを管理している人のために、再度投稿したくありません。皆さん、助けてくれてありがとう。

于 2013-03-01T07:46:34.303 に答える