У меня проблема с переводом 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
Это сопоставит ваш запрос 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"]
]
);
Других решений пока нет …