在开火中创建用户时遇到问题



我有以下简单的代码,当我没有依赖项时可以工作

AuthenticationToken authenticationToken = new AuthenticationToken("admin", "password");
        RestApiClient restApiClient = new RestApiClient("http://192.168.20.97", 7070, authenticationToken);
        UserEntity userEntity = new UserEntity("dasddasd","dsadsadasd", "", "password");
        restApiClient.createUser(userEntity);

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-client</artifactId>
    <version>3.1.4.Final</version>
</dependency>

当我添加上面的依赖项时,它会抛出以下错误

Exception in thread "main" javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:316)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:462)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:498)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.method(ClientInvocationBuilder.java:295)
    at org.igniterealtime.restclient.RestClient.call(RestClient.java:145)
    at org.igniterealtime.restclient.RestClient.post(RestClient.java:91)
    at org.igniterealtime.restclient.RestApiClient.createUser(RestApiClient.java:92)
    at app.Test.main(Test.java:20)
Caused by: javax.ws.rs.ProcessingException: RESTEASY003215: could not find writer for content-type application/xml type: org.igniterealtime.restclient.entity.UserEntity
    at org.jboss.resteasy.core.interception.jaxrs.ClientWriterInterceptorContext.throwWriterNotFoundException(ClientWriterInterceptorContext.java:40)
    at org.jboss.resteasy.core.interception.jaxrs.AbstractWriterInterceptorContext.getWriter(AbstractWriterInterceptorContext.java:146)
    at org.jboss.resteasy.core.interception.jaxrs.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:121)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.writeRequestBody(ClientInvocation.java:390)
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.writeRequestBodyToOutputStream(ApacheHttpClient4Engine.java:630)
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.buildEntity(ApacheHttpClient4Engine.java:595)
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.loadHttpMethod(ApacheHttpClient4Engine.java:483)
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:305)
    ... 7 more

我需要上面的依赖项才能在Keycloak中创建用户

您可能只需要添加以下依赖项即可集成 jackson 框架。它将自动封送/取消封送 JSON 和 XML。

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson2-provider</artifactId>
    <version>3.1.4.Final</version>
</dependency>

最终的问题是XML与JSON。 如果您查看 RestApiClient 使用的 RestClient 源代码,它总是以 XML 格式发送。 Keycloak始终是JSON,因此它无法使用XML。

看起来您可以使用 RestClientBuilder 设置Accepts标头,但Content-Type是硬编码的。

最新更新