Zend_Http_Client POST 'отсутствуют обязательные параметры' - PullRequest
0 голосов
/ 08 июня 2018

Прежде всего, я посмотрел на этот вопрос и попробовал решение, у меня не сработало.

Я работаю в Zend 1.12 на сервере PHP 7.0.22.

У меня есть функция, которая должна публиковать данные в 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 ) );

Когда я пытаюсь сбросить запрос $ с параметрами post внутри моего API (потому что я сам написал API), я вижу, что это пустое значение.Как будто $post не отправляется или данные фактически не передаются.Поскольку ошибка «отсутствует обязательный параметр» не соответствует действительности, все параметры установлены (но, возможно, не были переданы / отправлены правильно).

Может кто-нибудь сказать мне, что мне не хватает?Я был в этом весь день.Спасибо!

РЕДАКТИРОВАТЬ (@shevron):
API ожидает, что параметры будут переданы через url-encoded-form.Установка соответствующего заголовка в клиенте REST Content-Type: application/x-www-form-urlencoded заставляет API возвращать хороший ответ.Когда этот заголовок не добавлен, я получаю сообщение об ошибке.

...