Прежде всего, я посмотрел на этот вопрос и попробовал решение, у меня не сработало.
Я работаю в 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 возвращать хороший ответ.Когда этот заголовок не добавлен, я получаю сообщение об ошибке.