首先,我查看了这个问题并尝试了解决方案,但对我不起作用。
我在 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),我看到这是空的。就像没有$post
被发送或实际上没有数据被传递一样。因为错误“缺少必需的参数”是不正确的,所以设置了所有参数(但可能没有正确传递/发送)。
有人可以告诉我我错过了什么吗?我整天都在这。谢谢!
编辑(@shevron):
API 期望通过 url-encoded-form 传递参数。在 REST 客户端中设置适当的标头Content-Type: application/x-www-form-urlencoded
可使 API 返回良好的响应。当未添加此标头时,我收到错误消息。