web-dev-qa-db-ja.com

PHP curl)でPOSTFIELDSなしでデータを送信するにはどうすればよいですか?

REST API through PHPを使用しており、クエリ文字列または配列を送信する必要があることを意味するCURL_POSTFIELDSの動作について少し混乱しています。しかし、私が求めているのは、JSONテキストの文字列を送信することです。

私が使用しているAPIでは、フィールドなどはありません: https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Edit+issues

では、ファイルを使用せずに、クエリ文字列として解釈されないデータを送信するにはどうすればよいですか?

4
dukeofgaming

私が必要とするすべてが判明した:

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

4
dukeofgaming

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ストリームから受信した未加工のリクエスト本文を読み取ることができます。

0
HorusKol