0

まず、この質問を見て解決策を試してみましたが、うまくいきませんでした。

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 は適切な応答を返します。このヘッダーが追加されていない場合、エラーが発生します。

4

0 に答える 0