在Android上使用Jersey REST Client获取NullPointErexception

时间:2011-12-20 21:11:05

标签: android jersey

我的代码是:

    Client client = Client.create();
    WebResource web_resource = client.resource("http://www.myhostname.com/");
    // String string = web_resource.path("foo").accept("text/xml").get(String.class);
    // Log.d(getClass().getCanonicalName(), "jax-rs client string = " + string);
    Num num = web_resource.path("foo").accept(MediaType.TEXT_XML_TYPE).get(Num.class);

最后一行会导致问题,如果我用2条注释行替换它,我会遇到类似的问题,区别在于我在另一行MediaType.java上得到了异常。

E/AndroidRuntime(  840): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  840):    at javax.ws.rs.core.MediaType.toString(MediaType.java:265)
E/AndroidRuntime(  840):    at com.sun.jersey.api.client.ClientRequest.getHeaderValue(ClientRequest.java:232)
E/AndroidRuntime(  840):    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.writeOutBoundHeaders(URLConnectionClientHandler.java:276)
E/AndroidRuntime(  840):    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:197)
E/AndroidRuntime(  840):    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
E/AndroidRuntime(  840):    ... 17 more

jersey-client.jar和jersey-core.jar已添加到顶层的包中,并已添加到构建路径中的库中。

AndroidManifest.xml包含:

    <uses-permission android:name="android.permission.INTERNET" />

2 个答案:

答案 0 :(得分:3)

这是一项巨大的练习。我相信我可能是唯一一个让Jersey + JAXB在Android上工作的人。一个具体的答案无济于事,因为在我解决了这个NullPointerException后,我得到了另一个异常,然后是另一个异常。

我必须更改Jersey和JAXB的源代码才能实现这一目标。而且我还必须重新包装罐子。

抱歉,我知道这是一个质量不好的答案,但如果有人真的想走这条艰难的道路,请评论我,在这种情况下,我可以追溯我的步骤并提供帮助。

答案 1 :(得分:1)

我和球衣有同样的问题。我切换到Google Gson,一切顺利。