RESTLET клиент для Android 2.2 - PullRequest
1 голос
/ 19 марта 2011

Я использую телефон Android 2.2 и Adroid SDK 2.3.3 (API 10)

И я пытаюсь использовать REST Client со своего телефона, используя RESTLET для Android, после Учебное пособие RESTLET Учебное пособие для доступа к службе REST, работающей на RESTURL Но каждый раз, когда я устанавливаю это приложение как в телефоне, так и в эмуляторе, оно вылетает с сообщением «Неожиданно остановился» и, следовательно, Force Close. Я попытался включить оба org.restlet.ext.httpclient.jar и org.restlet.jar разных версий RESTLET, таких как 2.0.0, 2.0.5, 2.1m2, но результат всегда "FORCE CLOSE"

Может кто-нибудь сказать мне, если я делаю что-то не так? Любой совет также будет нормально на клиенте Restlful в Android 2.2

Код:

ClientResource cr = new ClientResource("http://androidgroundapps.appspot.com/rest/contacts/123");
    ContactResource resource = cr.wrap(ContactResource.class);
    // Get the remote contact
    Contact contact = resource.retrieve();

    if(contact == null){
        toast("Contact is Null buddy!");
    }

контакт всегда нулевой !!

Вот logcat (имя моего приложения myapp):

E/wifi    ( 1361): [android_net_wifi_getRssiHelper] rssi -50
I/ActivityManager( 1361): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.androidground
.apps.myapp/.MyApp }
W/Flex    ( 1453): getString FLEX_OPERATOR_CODE OPEN
W/System.err( 9188): Starting the internal [HTTP/1.1] client
I/ActivityManager( 1361): Displayed activity com.androidground.apps.myapp/.MyApp: 1414 ms (total 1414 ms)
E/wifi    ( 1361): [android_net_wifi_getRssiHelper] rssi -53
W/System.err( 9188): Stopping the internal[HTTP/1.1] client
E/wifi    ( 1361): [android_net_wifi_getRssiHelper] rssi -51
E/Tethering( 1361): active iface (usb0) reported as added, ignoring
D/WifiService( 1361): BroadcastReceiver : android.intent.action.BATTERY_CHANGED

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

Добавьте это впереди:

Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());

Но я получаю только LinkedHashMap, я ожидаю Объект типа (Контакт). Если вам это удастся, скажите мне

0 голосов
/ 11 апреля 2011

Да, я согласен с вами, такое поведение может показаться удивительным! Эта проблема характерна для Android, так как автоматическое обнаружение для соединителей и преобразователей, предоставляемых Restlet, не может использоваться в этом контексте. На самом деле это связано с ограничением способа, которым Android перепаковывает JAR-файлы, оставляя файлы дескрипторов в папке META-INF / services.

Решение состоит в том, чтобы вручную зарегистрировать преобразователи и соединители Restlet, как описано в ответе Nitromouse.

Thierry

...