Android入门:通过XML数据与服务器进行通信


一、与服务器通信


类似于浏览器与服务器通信,Android应用也可以与Web服务器通信,比如Android应用可以访问Servlet、JSP、图片等等;

Web服务器通过指定Content-Type可以指定返回的数据的类型,比如text/html表示网页,text/xml表示XML数据,image/jpeg为图片;


二、通过XML让客户端和服务器交流数据





比如Android客户端打开相亲网,则返回的是多个人的序列,包含人的姓名、年龄等信息,而怎么组织这些数据返回给客户端呢?用XML很方便;

三、代码实现


服务器使用了dom4j组织XML数据,并返回给客户端;
代码结构如下:


 
  1. package org.xiazdong.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.annotation.WebServlet;  
  9. import javax.servlet.http.HttpServlet;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.   
  13. import org.dom4j.Document;  
  14. import org.dom4j.DocumentHelper;  
  15. import org.dom4j.Element;  
  16. import org.xiazdong.domain.Person;  
  17.   
  18.   
  19. @WebServlet("/ListServlet")  
  20. public class ListServlet extends HttpServlet {  
  21.     private static final long serialVersionUID = 1L;  
  22.   
  23.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  24.         doPost(request,response);  
  25.     }  
  26.   
  27.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  28.         List<Person> list = new ArrayList<Person>();  
  29.         for(int i=0;i<4;i++){  
  30.             Person person = new Person(i,"xiazdong-"+i,20+i);  
  31.             list.add(person);  
  32.         }  
  33.         Document document = DocumentHelper.createDocument();  
  34.         Element persons = DocumentHelper.createElement("persons");  
  35.         document.add(persons);  
  36.         for(int i=0;i<4;i++){  
  37.             persons.addElement("person").addAttribute("id", list.get(i).getId()+"");  
  38.             persons.addElement("name").addText(list.get(i).getName());  
  39.             persons.addElement("age").addText(list.get(i).getAge()+"");  
  40.         }  
  41.         String xml = document.asXML();  //用dom4j组织一个XML字符串   
  42.         response.setContentType("text/xml; charset=UTF-8"); //设置返回值的类型   
  43.         response.getOutputStream().write(xml.getBytes("UTF-8"));    //设置返回值   
  44.     }  
  45.   
  46. }  
如果让浏览器访问,效果如下:
(注:Chrome打开总是显示不出XML声明。请用IE打开)
 
  • 1
  • 2
  • 下一页

相关内容