Httpful пост с urlencode

У меня есть небольшое приложение Laravel, и я добавил http://phphttpclient.com/ — httpful REST Client для работы с внешним API — http://en.help.mailstore.com/spe/Management_API_-_Using_the_API

Я был в состоянии «говорить» с API почтового магазина. Вот один пример:

public function GetEnvironmentInfo()
{
$uri = 'https://bla.com:8474/api/invoke/GetEnvironmentInfo';
$response = Httpful::post($uri)

->authenticateWith('admin', 'password')
->send();
$errors = $response->body->error;
$version = $response->body->result->version;
$license = $response->body->result->licenseeName;
dd($version . $license . $errors);
}

Эта функция работает. Но у меня проблема, когда я пытаюсь отправить дополнительные данные в API.

В руководстве API вы можете найти следующие предложения.

«Когда функции требуются дополнительные данные, эти данные должны быть отправлены с помощью urlencoded. Должен быть установлен HTTP-заголовок Content-Type: application / x-www-form-urlencoded».

Например, я хочу установить пароль пользователя с помощью API.

SetUserPassword

Установите пароль пользователя MailStore.

аргументы
Имя Тип Описание
instanceID строка Уникальный идентификатор экземпляра MailStore, в котором вызывается эта команда.
userName string Имя пользователя MailStore.
строка пароля Пароль пользователя MailStore.

Я попробовал этот код.

public function SetUserPassword()
{
$uri = 'bla.com:8474/api/invoke/SetUserPassword';
$response = Httpful::post($uri)

->authenticateWith('admin', 'password')
->addHeaders(array(
'instanceID' => 'bla',
'userName' => 'myuser',
'password' => 'mypassword'
))
->sendsType(\Httpful\Mime::FORM)
->send();
dd($response->body->error);
}

И вот ответ об ошибке, которую я получаю:

object(stdClass)[142]
public 'message' => string 'Argument instanceID is missing.' (length=31)
public 'details' => string 'System.Exception: Argument instanceID is missing.
bei #Y3c.#VGc.#X3c(#ncb #tPc, #8xe #I9f, String #GPf, NameValueCollection #P5b, Int32     #joc)
bei #Y3c.#VGc.#Slc(#LLc #Rmc, #8xe #I9f)
' (length=192)

Я добавил instanceID и другие аргументы в заголовок, но API не может найти аргументы или значения.

Я думаю, что проблема заключается в urlencode? Вы можете мне помочь?

Спасибо!

2

Решение

В методе addHeaders вам нужно передать массив [‘Content-Type’ => ‘application / x-www-form-urlencoded’]. Остальные параметры должны быть переданы как тело запроса post.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector