Zend_Http_Client POST'缺少必需参数'

时间:2018-06-08 13:48:52

标签: web-services zend-framework zend-http-client

首先,我查看了this问题并尝试了解决方案,但对我没有用。

我在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返回良好的响应。如果未添加此标头,则会收到错误消息。

0 个答案:

没有答案