可以将Restlet用作Rails" rest"的客户端。 API?

时间:2014-05-21 06:11:37

标签: android ruby-on-rails restlet

我曾经在iOS中使用过Restkit。使用restkit,我可以使用rails服务器在iOS上做一些安静的事情。 (是的,rails不是休息的最佳选择,但通过一些调整,你可以使它像休息服务器一样)。

现在我正在寻找类似于Restkit的东西,但是对于Android。 Will Restlet能够胜任这项工作吗?

如果是这样,你能指出任何教程吗?很难找到Restlet-Android-Rails的教程

#n00b

到目前为止我尝试了什么

在我的主要活动创建中:

Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
ClientResource cr = new ClientResource("http://localhost:5000/api/feedback/30");
cr.setRequestEntityBuffering(true);
cr.accept(MediaType.APPLICATION_JSON);
FeedbackResource resource = cr.wrap(FeedbackResource.class);
Feedback feedback = resource.retrieve();
System.out.println(feedback);

我的FeedbackResource.java资源

package com.blablabla.backendResources;

import com.blablabla.model.Feedback;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
import org.restlet.resource.Put;

public interface FeedbackResource
{
    @Get("json")
    public Feedback retrieve();

    @Put("json")
    public void store(Feedback feedback);

    @Delete
    public void remove();
}

Feedback.java

package com.blablabla.model;

import java.io.Serializable;

public class Feedback implements Serializable {

    private static final long serialVersionUID = 1L;

    private int id;
    private String name;
    private String email;
    private String comment;

    public Feedback() {
        super();
    }

    public Feedback(int id, String name, String email, String comment) {
        super();
        this.id = id;
        this.name = name;
        this.email = email;
        this.comment = comment;
    }

    public int getId()
    {
        return this.id;
    }

    public void setId(int id)
    {
        this.id = id;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
}

所有失败:(但有卷曲:

curl -X GET -H "Accept:application/json"  http://localhost:5000/api/feedback/30

响应:

{" ID":30,"名称":"""电子邮件":"" ,"评论":" Opino popo"}

正如@Caleryn建议的那样,我去了基础,只是试着去做,但即便如此,我也失败了:

错误:

  

05-21 10:08:36.762 669-669 / com.reserbus W / System.err:正在启动   内部HTTP客户端05-21 10:08:36.802 669-669 / com.reserbus   W / System.err:尝试检测到可恢复的错误(1000)   再次在2000毫秒。 05-21 10:08:38.822 669-669 / com.reserbus   W / System.err:尝试检测到可恢复的错误(1000)   再次在2000毫秒。 05-21 10:08:40.842 669-669 / com.reserbus   W / System.err:连接错误(1000) - 连接器失败   连接到服务器05-21 10:08:40.852 669-669 / com.reserbus   W / System.err:at   org.restlet.resource.ClientResource.doError(ClientResource.java:599)   05-21 10:08:40.852 669-669 / com.reserbus W / System.err:at   org.restlet.resource.ClientResource.handleInbound(ClientResource.java:1165)   05-21 10:08:40.852 669-669 / com.reserbus W / System.err:at   org.restlet.resource.ClientResource.handle(ClientResource.java:1060)   05-21 10:08:40.852 669-669 / com.reserbus W / System.err:at   org.restlet.resource.ClientResource.handle(ClientResource.java:1077)   05-21 10:08:40.852 669-669 / com.reserbus W / System.err:at   org.restlet.resource.ClientResource.handle(ClientResource.java:969)   05-21 10:08:40.862 669-669 / com.reserbus W / System.err:at   org.restlet.resource.ClientResource.get(ClientResource.java:687)05-21   10:08:40.862 669-669 / com.reserbus W / System.err:at   com.reserbus.MainActivity.onCreate(MainActivity.java:50)

代码

try {
  System.out.println(new ClientResource("http://localhost:5000/api/feedback/30.json").get(MediaType.APPLICATION_JSON).getText());
} catch (Exception e) {
  e.printStackTrace();
}

0 个答案:

没有答案