Jersey客户端支持Android?

时间:2014-11-11 20:01:00

标签: java android rest maven jersey-client

我想使用REST Jersey Client来调用Web服务。但是从Android应用程序调用时它失败了;从简单的Java客户端(没有任何Android代码)调用时,相同的Web服务调用工作。这是否意味着在Android的上下文中调用Jersey Client时不起作用,或者它需要任何特定的配置才能进行REST调用?

我的pom.xml有这个:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.13</version>
</dependency>

我的示例代码:

  Response getResponse = ClientBuilder.newClient()
              .target("http://myserver:8081").path("/users/employees")
              .request()
              .get();

我在android模拟器日志中看到了这些错误:

Failed resolving Lorg/glassfish/jersey/internal/OsgiRegistry; interface 2690 'Lorg/osgi/framework/SynchronousBundleListener;'
Link of class 'Lorg/glassfish/jersey/internal/OsgiRegistry;' failed
VFY: unable to find class referenced in signature (Lorg/glassfish/jersey/internal/OsgiRegistry;)
...
Cannot find default implementation of the HK2 ServiceLocatorGenerator
java.lang.ClassNotFoundException: Provider of org.glassfish.jersey.internal.RuntimeDelegateImpl could not be instantiated: java.lang.IllegalStateException: No generator was provided and there is no default generator registered.

相关评论here: &#34; Android拥有Dalvik虚拟机,而非原始JVM。我认为这就是为什么Jersey Client API在Android OS中不起作用的原因。但我确定不知道!&#34;

1 个答案:

答案 0 :(得分:0)

这篇文章是相关的:

When using Jersey for restful api in Android app I get this error:

似乎在Android中不支持Jersey客户端:我尝试在android中导入一个用于REST api程序的工作泽西客户端并且有一个致命的例外。

12-16 16:41:33.049    3711-3711/com.program.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.program.example, PID: 3711
java.lang.VerifyError: com/sun/jersey/core/impl/provider/entity/MimeMultipartProvider
        at java.lang.Class.getDeclaredConstructors(Native Method)
        at java.lang.Class.getConstructors(Class.java:508)
        at com.sun.jersey.core.spi.component.ComponentConstructor.getInstance(ComponentConstructor.java:174)
        at com.sun.jersey.core.spi.component.ProviderFactory.__getComponentProvider(ProviderFactory.java:166)
        at com.sun.jersey.core.spi.component.ProviderFactory.getComponentProvider(ProviderFactory.java:137)
        at com.sun.jersey.core.spi.component.ProviderServices.getComponent(ProviderServices.java:256)
        at com.sun.jersey.core.spi.component.ProviderServices.getServices(ProviderServices.java:160)
        at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:176)
        at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162)
        at com.sun.jersey.api.client.Client.init(Client.java:342)
        at com.sun.jersey.api.client.Client.access$000(Client.java:118)
        at com.sun.jersey.api.client.Client$1.f(Client.java:191)
        at com.sun.jersey.api.client.Client$1.f(Client.java:187)
        at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
        at com.sun.jersey.api.client.Client.<init>(Client.java:187)
        at com.sun.jersey.api.client.Client.<init>(Client.java:159)
        at com.sun.jersey.api.client.Client.create(Client.java:669)
        at android.view.View.performClick(View.java)
        at android.view.View$PerformClick.run(View.java)
        at android.os.Handler.handleCallback(Handler.java)
        at android.os.Handler.dispatchMessage(Handler.java)
        at android.os.Looper.loop(Looper.java)
        at android.app.ActivityThread.main(ActivityThread.java:5476)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
        at dalvik.system.NativeStart.main(Native Method)

我希望我可以发表评论......

相关问题