jersey-client 라이브러리를 사용하여 원자 피드를 소비하려고하지만 많은 행운이 없습니다. 이것은 내가 사용하고 코드입니다 :Jersey 클라이언트가 Android에서 NullPointerException을 발생했습니다.
원래 날이 예외 점점되었다Client client = Client.create();
ClientResponse response = client.resource("http://192.168.1.65:9998/tweets").accept(MediaType.APPLICATION_ATOM_XML).get(ClientResponse.class);
String responseString = response.getEntity(String.class);
:
E/AndroidRuntime (13126) : java.lang.NullPointerException이 E/AndroidRuntime을 (13126) : javax.ws.rs.core.MediaType.valueOf (MediaType.java:119) E/AndroidRuntime (13126) : at> com.sun.jersey.api.client.ClientResponse.getType (ClientResponse.java:614) E/AndroidRuntime (13126) : com.sun.jersey.api.client.ClientResponse.getEntity (ClientResponse.java:531) E/AndroidRuntime (13126) : com.sun.jersey.api.client. ClientResponse.getEntity (ClientResponse.java:506) E/AndroidRuntime (13126) : com.pivotallabs.tracker.TweetsService.onHandleIntent (TweetsService.java:55) E/AndroidRuntime (13126) : android.app.IntentService $ ServiceHandler.handleMessage (IntentService.java:59) E/AndroidRuntime (13126) : android.os.Handler.dispatchMessage (Handler.java:99) E/AndroidRuntime (13126) : android.os.Looper.loop Looper.java:130) E/AndroidRuntime (13126) : android.os.HandlerThread.run에서 (HandlerThread.java:60) 나는이 질문에서 솔루션을 사용하려고
-Jersey client in android with protocol buffer - 쓰기를 포함 커스텀 ServiceIteratorProvider를 사용하면 첫 번째 프로 우블을 제거 할 수 있습니다. 그런 다음 ServiceIteratorProvider가 com.sun.jersey.client.proxy.ViewProxyProvider의 구현을 찾고있는 새로운 문제를 만들었습니다.
나는 그 가짜 구현 만든 :public class FakeViewProvider implements com.sun.jersey.client.proxy.ViewProxyProvider {
public <T> ViewProxy<T> proxy(Client client, Class<T> tClass) {
Class[] interfaces = new Class[] {tClass};
return (ViewProxy<T>) Proxy.newProxyInstance(tClass.getClassLoader(), interfaces, new Delegator(interfaces, new Object[]{}));
}
}
을 그리고 전화가 Client.create하기 직전에 그것을 연결 :
ServiceFinder.setIteratorProvider를 (새 Buscador());
...하지만 지금은 대신이 오류를 얻을 :E/AndroidRuntime (12789) : java.lang.NullPointerException이 E/AndroidRuntime (12789) : com.sun.jersey.spi에서. service.ServiceFinder.toClassArray (ServiceFinder.java:595) E/AndroidRuntime (12789) : com.sun.jersey.core.spi.component.ProviderServices.getServiceClasses (ProviderServices.java:318) E/AndroidRuntime (12789) : com.sun.jersey.core.spi.component.ProviderServices.getServiceClasses (ProviderServices.java:311) E/AndroidRuntime (12789) : com.sun.jersey.core.spi.component.ProviderServices.getServices (ProviderServices .java : 159) E/AndroidRuntime (12789) : com.sun.jersey.api.client.Client.init (Client.java:249) E/AndroidRuntime (12789) : com.sun.jersey.api.client.Client. $ 000 (Client.java:191) E/AndroidRuntime (12789) : com.sun.jersey.api.client.Client $ 1.f (Client.java:191) E/AndroidRuntime (12789) : at com. sun.jersey.api.client.Client $ 1.f (Client.java:187) E/AndroidRuntime (12789) : com.sun.jersey.spi.inject.Errors.processWithErrors (Errors.java:193) E/AndroidRuntime (12789) : com.sun.jersey.api.client.Client. (Client.java:187) E/AndroidRuntime (12789) : com.sun.jersey.api.client.Client. (클라이언트. java : 159) E/AndroidRuntime (12789) : com.sun.jersey.api.client.Client.create (클라이언트.java : 669)
아무리 생각해 본 사람이 있으면이 문제가 해결되어 멋지다고 생각합니다.
건배, 마크
나를 위해 FakeViewProvider 클래스를 잘못된 디렉토리에 두는 것이 더 중요합니다. SPI는 그것을 얻으려고하지만 아무 소용이 없습니다. [http://weblogs.java.net/blog/2006/04/07/creating-service-provider-interface](http://weblogs.java.net/blog/2006/04/07/creating- service-provider-interface)를 사용하여 SPI를 올바르게 구성하는 방법에 대해 설명합니다. –
META-INF/services/jersey-client-components –
어쩌면 [이 답변] (http://stackoverflow.com/questions/9342506/jersey-client-on-android-nullpointerexception?answertab=active#tab-top) 도와주세요. – rAy