Тип носителя content
говорит application/x-www-form-urlencoded
, но фактическая строка содержимого больше похожа на JSON.
Перепроверьте, как вы отправляете контент, так как это может быть проблемой форматирования.
На основании документации API для запроса токена предоставления пароля , запрос токена предоставления пароля будет выглядетькак это
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'taylor@laravel.com',
'password' => 'my-password',
'scope' => '',
],
]);
Документация Guzzel
Отправка application/x-www-form-urlencoded
запросов POST требует, чтобы вы указали поля POST в виде массива в запросе form_params
параметры.
$response = $client->request('POST', 'http://httpbin.org/post', [
'form_params' => [
'field_name' => 'abc',
'other_field' => '123',
'nested_field' => [
'nested' => 'hello'
]
]
]);
Ниже показано, как сделать запрос токена предоставления пароля с помощью HttpClient
и FormUrlEncodedContent
var url = "https://" + InterfaceAddress.Text + "/oauth/token";
string username = UserName.Text;
string password = Password.Password;
var form_params = new Dictionary<string,string>(){
{"grant_type", "password"},
{"username", username},
{"password", password},
{"client_id","4"},
{"client_secret", "YAYLOOKATTHISNOTWORKING"},
{"scope", ""}
};
var content = new FormUrlEncodedContent(form_params);
var response = await App.client.PostAsync(url, content);
response.EnsureSuccessStatusCode(); // Throw if not a success code.