Я пытаюсь использовать атомную ленту, используя библиотеку jersey-client, но без особой удачи.Вот код, который я использую:
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): на> 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 $ ServiceHandler(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)
Я пытался использовать решение из этого вопроса - клиент Джерси в Android с буфером протокола - который включал в себя написание пользовательского 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 (new 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): на ком.sun.jersey.api.client.Client.init (Client.java:249) E / AndroidRuntime (12789): на com.sun.jersey.api.client.Client.access $ 000 (Client.java:118) E / AndroidRuntime(12789): на com.sun.jersey.api.client.Client $ 1.f (Client.java:191) E / AndroidRuntime (12789): на com.sun.jersey.api.client.Client $ 1.f (клиент.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. (Client.java:159) E / AndroidRuntime (12789): на com.sun.jersey.api.client.Client.create (Client.java:669)
Я в значительной степени застрял, поэтому, если у кого-то есть какие-либо идеи / они решили эту проблему, это было бы круто!
Ура, Марк