REST API through PHPを使用しており、クエリ文字列または配列を送信する必要があることを意味するCURL_POSTFIELDSの動作について少し混乱しています。しかし、私が求めているのは、JSONテキストの文字列を送信することです。
私が使用しているAPIでは、フィールドなどはありません: https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Edit+issues
では、ファイルを使用せずに、クエリ文字列として解釈されないデータを送信するにはどうすればよいですか?
私が必要とするすべてが判明した:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
これにより、POSTFIELDSで送信されたコンテンツが正しい方法で解釈されます。ソース: http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl
JSON with PHP/CURL の使用に関する記事を見つけました
一般的に、これはほとんど行いますが、XML-RPCリクエストを使用します。
curl_setopt($cnxn, CURLOPT_POST, TRUE);
curl_setopt($cnxn, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($cnxn, CURLOPT_POSTFIELDS, $body);
RPC要求のXMLドキュメントを$body
変数に構築するだけで、サーバーはそれを要求の本文として読み取ります。 Zend Framework MVCを使用していますが、独自にローリングしている場合は、php://input
ストリームから受信した未加工のリクエスト本文を読み取ることができます。