我正在尝试使用rest客户端创建一个用户。我遵循了以下文档,https://github.com/igniterealtime/REST-API-Client
虽然我能够通过ARC/Postman创建用户,但当我通过编程尝试时,我得到了以下的异常。
下面是我的代码:
AuthenticationToken authenticationToken = new AuthenticationToken(Constants.SHARED_SECRET_KEY);
RestApiClient restApiClient = new RestApiClient(Constants.REST_API_URL, Constants.REST_API_PORT, authenticationToken);
UserDetails userDetails = getUserDetails();
UserEntity userEntity = new UserEntity();
userEntity.setName(userDetails.getName());
userEntity.setEmail(userDetails.getEmail());
userEntity.setPassword(Constants.DEFAULT_PASSWORD);
userEntity.setUsername(userDetails.getName());
restApiClient.createUser(userEntity); build.gradle:
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.navigation:navigation-fragment:2.3.0'
implementation 'androidx.navigation:navigation-ui:2.3.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation "org.igniterealtime.smack:smack-tcp:4.2.0"
implementation "org.igniterealtime.smack:smack-experimental:4.2.0"
implementation ("org.igniterealtime.smack:smack-android:4.2.0"){
exclude module: 'smack-omemo'
exclude module: 'smack-omemo-signal'
}
implementation ('org.igniterealtime:rest-api-client:1.1.5'){
exclude module: 'javax.inject'
}
implementation 'javax.inject:javax.inject:1'}
注意:我必须将'javax.inject‘模块从org.ignitericitime:rest-api-client:1.1.5中排除在外,因为它导致了模块中的重复类javax.inject.Inject,这些类可以在javax.inject.Inject中找到,这些类可以在javax.inject.Inject模块中找到-javax.Inject-2.5.0-b05.jar
异常: E/SessionManager:未能使用rest客户端创建用户。找不到媒体类型= org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: /xml,type=class org.igniterealtime.restclient.entity.UserEntity,genericType=class org.igniterealtime.restclient.entity.UserEntity.在org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247) at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130) at org.glassfish.jersey.client.ClientRequest.doWriteEntity(ClientRequest.java:517) at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:499) at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:393)在org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:285) at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:228) atorg.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697) at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448) at org.igniterealtime.restclient.RestClient.call(RestClient.java:153) at org.igniterealtime.restclient.RestClient.post(RestClient.java:99) at org.igniterealtime.restclient.RestApiClient.createUser(RestApiClient.java:138) at com.example.gossip.login.SessionManager.com.example.gossip.login.LoginActivity$1.onClick(LoginActivity.java:58),android.view.View.performClick(View.java:5610),android.view.View$PerformClick.run(View.java:22265),android.os.Handler.handleCallback(Handler.java:751),android.os.Handler.dispatchMessage(Handler.java:95),android.os.Looper.loop(Looper.java:154),android.app.ActivityThread.main(ActivityThread.java:6077),java。com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)的lang.reflect.Method.invoke(原生方法)
发布于 2020-07-29 08:19:29
您需要添加泽西媒体依赖项。
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.17</version>
</dependency>https://stackoverflow.com/questions/63053621
复制相似问题