Java 哪些REST服务可以与Android一起工作

Java 哪些REST服务可以与Android一起工作,java,android,web-services,rest,Java,Android,Web Services,Rest,我需要决定需要为web服务创建何种REST服务,web服务必须接收包含患者数据的URL,并返回他可以使用的保险信息。此服务必须与Android一起使用 我从以前的一些帖子中了解到。SOAP对android真的不好 因此,我的问题是-什么样的Web服务适合Android?如果我理解,你需要一个Web服务来与你的应用程序进行通信,它会像: 你的应用程序调用你的WS-url(可能带有一些POST数据),你的WS-url会响应你的应用程序。 然后,您可以创建一个REST Web服务,它可以在中进行通信?

我需要决定需要为web服务创建何种REST服务,web服务必须接收包含患者数据的URL,并返回他可以使用的保险信息。此服务必须与Android一起使用

我从以前的一些帖子中了解到。SOAP对android真的不好


因此,我的问题是-什么样的Web服务适合Android?

如果我理解,你需要一个Web服务来与你的应用程序进行通信,它会像:

你的应用程序调用你的WS-url(可能带有一些POST数据),你的WS-url会响应你的应用程序。

然后,您可以创建一个REST Web服务,它可以在中进行通信?Android可以使用一些非常好的库解析JSON,例如

对于WS技术,您可以使用您想要的任何东西

事情会像这样,你要求一个对象,让我们说它是一个有年龄和名字的人的名单。API位于
http://www.yourapi.com/
,所以当你要找人时,它是
http://www.yourapi.com/people

调用API时,响应如下:

[{
    "age": 18,
    "name": "toto"
},
{
    "age": 21,
    "name": "foo"
}]
因此,在客户端(您的Android项目),您有一个
Person
类:
Person.java

public class Person {
    private int age;
    private String name;

    public Person(){
        this.age = 0;
        this.name = "";
    }

    public int getAge(){
         return age;
    }

    public void setAge(int age){
         this.age = age;
    }

    public String getName({
         return name;
    }

    public void setName(String name){
         this.name = name;
    }
}
哪一个是您的模型,以及下载该模型的
AsyncTask

public abstract class PeopleDownloader extends AsyncTask<Integer, Integer, ArrayList<Person>> {

    private static final String URL = "http://www.yourapi.com/people";

    @Override
    protected ArrayList<Person> doInBackground(Void... voids) {
        HttpClient httpclient = new DefaultHttpClient();
        // Prepare a request object
        HttpGet httpget = new HttpGet(URL);
        // Execute the request
        HttpResponse response;
        try {
            Log.d(TAG, "Trying to reach " + httpget.getURI());
            response = httpclient.execute(httpget);
            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            String finalResposne = "";
            String line = "";
            while ((line = rd.readLine()) != null) {
                finalResposne += line;
            }
            Log.d(TAG, finalResposne);
            return new Gson().fromJson(finalResposne, new TypeToken<List<Person>>() {
            }.getType());
        } catch (Exception e) {
            Log.e(TAG, "Error in doInBackground " + e.getMessage());
        }
        return null;
    }
}
公共抽象类PeopleDownloader扩展了异步任务{
私有静态最终字符串URL=”http://www.yourapi.com/people";
@凌驾
受保护的ArrayList doInBackground(无效…无效){
HttpClient HttpClient=新的DefaultHttpClient();
//准备一个请求对象
HttpGet HttpGet=新的HttpGet(URL);
//执行请求
HttpResponse响应;
试一试{
Log.d(标记“尝试访问”+httpget.getURI());
response=httpclient.execute(httpget);
//得到回应
BufferedReader rd=新的BufferedReader(新的InputStreamReader(response.getEntity().getContent());
字符串finalResposne=“”;
字符串行=”;
而((line=rd.readLine())!=null){
finalResposne+=行;
}
Log.d(标签、最终公告);
返回new Gson().fromJson(finalResposne,new TypeToken()){
}.getType());
}捕获(例外e){
Log.e(标记“doInBackground中的错误”+e.getMessage());
}
返回null;
}
}

已经完成了。

JSON在使用Jackson库时运行良好。GSON可能是一种选择,但我自己还没有尝试过

正如您所提到的,SOAP几乎是不可能的,但是使用SimpleXML框架而不是JAXB可以很好地完成REST上的XML绑定。但是,对于复杂的对象体系结构,这可能非常缓慢。如果你有选择的话,我会选择JSON

查看更多选项