Java 哪些REST服务可以与Android一起工作
我需要决定需要为web服务创建何种REST服务,web服务必须接收包含患者数据的URL,并返回他可以使用的保险信息。此服务必须与Android一起使用 我从以前的一些帖子中了解到。SOAP对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服务适合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 查看更多选项