CloudMQTT API Guzzle

У меня проблема с переводом curl в жрет запрос.
В документах для создания пользователя мне просто нужно опубликовать:

$ curl -XPOST -d '{"username":"test", "password":"super_secret_password"}' -H         "Content-Type:application/json" -u "$CLOUDMQTT_USER:$CLOUDMQTT_PASSWORD"     https://api.cloudmqtt.com/user

В моем проекте я не могу использовать curl, поэтому я использую guzzle:

$client = new Client();

$res = $client->post('https://api.cloudmqtt.com/user', ['auth' =>  ['xxx', 'xxx'], 'body' => ["username"=>"user", "password"=>"super_secret_password"]]);

И пользователь создан, я вижу нового пользователя в списке пользователей на панели, но сервер отвечает 500 при создании пользователя. Что я делаю неправильно? Может быть, мой жадный запрос неверного формата? Я понятия не имею

https://www.cloudmqtt.com/docs-api.html ссылка на API

0

Решение

Это сопоставит ваш запрос Guzzle с запросом curl, хотя я не могу точно сказать, что это решит вашу ошибку 500:

$client = new Client([
'headers' => [ 'Content-Type' => 'application/json' ]
]);

$response = $client->post('https://api.cloudmqtt.com/user',
[
'auth' =>  ['xxx', 'xxx'],
'body' => json_encode(
[
"username"=>"user",
"password"=>"super_secret_password"]
)
]
);

Различия здесь включают в себя установку заголовка Content-Type, а также кодирование тела в json вместо массива (что может не повлиять здесь?).

РЕДАКТИРОВАТЬ:
Похоже, json Параметр автоматически установит заголовок и json_encode тело для вас:

$client = new Client();

$response = $client->post('https://api.cloudmqtt.com/user',
[
'auth' =>  ['xxx', 'xxx'],
'json' =>
[
"username"=>"user",
"password"=>"super_secret_password"]
]
);

Документы

1

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

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

По вопросам рекламы [email protected]