适用于Android 2.2的RESTLET客户端

时间:2011-03-18 22:24:07

标签: android restlet

我使用的是Android 2.2手机和Adroid SDK 2.3.3(API 10)

我正在尝试使用RESTLET for Android从手机中使用REST Client 在RESTLET Tutorial中给出的教程,用于访问在RESTURL上运行的REST服务但每当我在手机和模拟器中安装此应用程序时,它都会崩溃并显示消息 “意外停止”,因此强制关闭。我试图包括不同RESTLET版本的org.restlet.ext.httpclient.jar和org.restlet.jar,如2.0.0,2.0.5,2.1m2,但结果总是“FORCE CLOSE”

有人可以告诉我,如果我做错了吗?任何建议也是 适用于Android 2.2中的Restlful客户端

代码:

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 个答案:

答案 0 :(得分:3)

在前面添加:

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

但我只回到LinkedHashMap,我期待一个类型的对象(联系人)。如果您管理,请告诉我

答案 1 :(得分:0)

是的,我同意你的看法,这种行为可能会让人费解!该问题特定于Android,因为Restlet提供的连接器和转换器的自动发现不能在此上下文中使用。事实上,这是由于Android重新打包JAR文件在META-INF / services文件夹中遗漏描述符文件的方式有限。

解决方案是按照Nitromouse的答案手动注册Restlet转换器和连接器。

亨利