0

私の実際の問題を読む前に、この質問を閉じないでください。私は多くの関連する問題を見てきましたが、まだ抱えています。PHPで使用するメソッドでjson_encoded配列を送信したいだけです。設定するとデータが投稿されません。空の配列を受け取ります。content-type 行を削除すると、データは投稿されますが、json としてではありません。これが私のコードですPOSTCURLcontent-type as application/jsonpost

 $data = array('id' => $post['id'], 'action' => $post['action']);
 $post_data = http_build_query($data);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));

この場合、空の投稿を受け取ります。行をコメントアウトするcurl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));と、投稿データを受け取りますが、json エンコードは受け取りません。json_encoded 配列が必要です。誰かが私が間違っていることを教えてくれますか?

よろしくお願いします:

4

2 に答える 2

1

クエリ文字列を配列ではなくjsonにエンコードして、json_encodeに渡します$post_data = http_build_query($data);$data

 $data = array('id' => $post['id'], 'action' => $post['action']);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

もちろん、これがサービス nedds を機能させて json 投稿をサポートします。

于 2012-12-08T18:41:52.370 に答える
1

send-n-accept RAW POST リクエストを試してください。

<?php $postdata = file_get_contents("php://input"); ?> 

生投稿

于 2012-12-08T18:42:08.420 に答える