我有一个问题,当我需要将用户插入Keycloak我有这个错误:
消息:“http://localhost:8080/auth/admin/realms/demo/clients的Http失败响应:415不支持的媒体类型”名称:“HttpErrorResponse”ok:false状态:415 statusText:“不支持的媒体类型”url:“http://localhost:8080/auth/admin/realms/demo/clients”
如果你能帮助我,我会给你你的代码:
getToken(tppname) {
const data = new HttpParams()
.set('username', 'pierrecolart')
.set('password', 'root')
.set('grant_type', 'password')
.set('client_id','admin-cli');
console.log(tppname);
token: '';
tokenValue: '';
this.http
.post(
this.ROOT_URL,
data.toString(),
{headers: new HttpHeaders().set('content-type', 'application/x-www-form-urlencoded')}
)
//.map(res => res.json())
.subscribe(data => {
console.log(data);
this.token = data['access_token'];
console.log(this.token);
this.tokenValue = 'Bearer ' + this.token;
const dataPost = new HttpParams()
.set('Client ID', 's');
console.log(this.tokenValue);
this.http
.post(
'http://localhost:8080/auth/admin/realms/demo/clients',
dataPost.toString(),
{headers: new HttpHeaders().set('content-type', 'application/x-www-form-urlencoded').set('Authorization', this.tokenValue).set('Accept', 'application/json')}
).subscribe(data => {
console.log(data); })
})
正如Pierre Mallet在评论中提到的那样,你使用的Content-Type
是application/x-www-form-urlencoded
。这可以用于登录,例如当你要求openid-connect/token
时。但是,此Content-Type
目前似乎不受管理员API支持,但您可以使用Content-Type
application/json
发出请求,假设您提供有效的用户凭据,则应该给出201响应。