Java Restlet表示错误422
我得到这个表示错误。有人能帮我修一下吗 错误:Java Restlet表示错误422,java,android,jackson,restlet,restlet-2.3.1,Java,Android,Jackson,Restlet,Restlet 2.3.1,我得到这个表示错误。有人能帮我修一下吗 错误: Process: com.package, PID: 10791 java.lang.RuntimeException: Unable to resume activity {com.package/com.package.MainActivity}: org.restlet.resource.ResourceException: Unprocessable Entity (422) - The server understands the co
Process: com.package, PID: 10791
java.lang.RuntimeException: Unable to resume activity {com.package/com.package.MainActivity}: org.restlet.resource.ResourceException: Unprocessable Entity (422) - The server understands the content type of the request entity and the syntax of the request entity is correct but was unable to process the contained instructions
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: org.restlet.resource.ResourceException: Unprocessable Entity (422) - The server understands the content type of the request entity and the syntax of the request entity is correct but was unable to process the contained instructions
at org.restlet.resource.Resource.toObject(Resource.java:893)
at org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:324)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy4.retrieve(Unknown Source)
at com.package.MainActivity.onResume(MainActivity.java:236)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
at android.app.Activity.performResume(Activity.java:6312)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.io.IOException: Unable to create the Object representation
at org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:282)
at org.restlet.service.ConverterService.toObject(ConverterService.java:229)
at org.restlet.resource.Resource.toObject(Resource.java:889)
at org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:324)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy4.retrieve(Unknown Source)
at com.package.MainActivity.onResume(MainActivity.java:236)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
at android.app.Activity.performResume(Activity.java:6312)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalArgumentException: The serialized representation must have this media type: application/x-java-serialized-object or this one: application/x-java-serialized-object+xml
at org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:194)
at org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:123)
at org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:104)
at org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:279)
at org.restlet.service.ConverterService.toObject(ConverterService.java:229)
at org.restlet.resource.Resource.toObject(Resource.java:889)
at org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:324)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy4.retrieve(Unknown Source)
at com.package.MainActivity.onResume(MainActivity.java:236)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
at android.app.Activity.performResume(Activity.java:6312)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
UserResource.java
public interface UserResource {
@Get //("xml|json|x-java-serialized-object|x-java-serialized-object+xml")
public User retrieve();
@Put
public int registerUser(Representation jsonStr);
@Delete
public void remove();
}
UserServerResource.java(相关部分)
安卓客户端
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
ClientResource cr = new ClientResource("http://localhost:8111/user");
cr.setRequestEntityBuffering(true);
cr.accept(MediaType.APPLICATION_JSON);
UserResource ucr = cr.wrap(UserResource.class);
User user = ucr.retrieve();
我启用了以下标记并使用了正确的依赖项
@Get ("xml|json|x-java-serialized-object|x-java-serialized-object+xml")
我使用的jackson依赖项没有此方法。我添加了2.8.0,但它不起作用。我加了7.5,效果不错。下面是我添加的,并强制gradle不从缓存中使用它们
compile files('libs/jackson-databind-2.7.5.jar')
compile files('libs/jackson-core-2.7.5.jar')
compile files('libs/jackson-annotations-2.7.5.jar')
@Get ("xml|json|x-java-serialized-object|x-java-serialized-object+xml")
compile files('libs/jackson-databind-2.7.5.jar')
compile files('libs/jackson-core-2.7.5.jar')
compile files('libs/jackson-annotations-2.7.5.jar')