まず、この質問を見て解決策を試してみましたが、うまくいきませんでした。
PHP 7.0.22 サーバー上の Zend 1.12 で作業しています。
データを API に投稿し、投稿の確認を受け取る関数があります。
残りのクライアントでテストするたびに、Firefox で、API 呼び出しから次の応答を受け取ります
"{\"code\":400,\"text\":\"Missing required parameters.\"}"
。
ヘッダーを追加するとContent-Type: application/x-www-form-urlencoded
、期待される応答が得られます: '200, true'
。しかし、コードでこのヘッダーを明示的に設定しようとしても、常に400
.
コントローラ:
$params = array();
$params[ 'name' ] = 'John';
$params[ 'email' ] = 'john@example.com';
$client = new Zend_Http_Client();
$client->setUri( 'path/to/my/api' );
$client->setParameterPost( $params );
$response = client->request( Zend_Http_Client::POST );
var_dump( $response );
私も生データで作業しようとしました..
$params = array();
$params[ 'name' ] = 'John';
$params[ 'email' ] = 'john@example.com';
$params = json_encode( $params );
$client = new Zend_Http_Client();
$client->setUri( 'path/to/my/api' );
$client->setRawData( $params, 'application/json' );
$response = client->request( Zend_Http_Client::POST );
var_dump( json_decode( $response ) );
API 内の post パラメータを使用して $request をダンプしようとすると (API を自分で作成したため)、これが null であることがわかります。送信されていない$post
か、実際にデータが渡されていないようです。「必要なパラメーターがありません」というエラーは正しくないため、すべてのパラメーターが設定されています (ただし、正しく渡されていないか、正しく送信されていない可能性があります)。
誰かが私に欠けているものを教えてもらえますか? 私は一日中これにいました。ありがとう!
編集(@shevron):
API は、パラメーターが url-encoded-form 経由で渡されることを想定しています。REST クライアントで適切なヘッダーを設定Content-Type: application/x-www-form-urlencoded
すると、API は適切な応答を返します。このヘッダーが追加されていない場合、エラーが発生します。