歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android入門:通過XML數據與服務器進行通信

Android入門:通過XML數據與服務器進行通信

日期:2017/3/1 10:17:40   编辑:Linux編程

一、與服務器通信


類似於浏覽器與服務器通信,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. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.annotation.WebServlet;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.dom4j.Document;
  11. import org.dom4j.DocumentHelper;
  12. import org.dom4j.Element;
  13. import org.xiazdong.domain.Person;
  14. @WebServlet("/ListServlet")
  15. public class ListServlet extends HttpServlet {
  16. private static final long serialVersionUID = 1L;
  17. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  18. doPost(request,response);
  19. }
  20. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21. List<Person> list = new ArrayList<Person>();
  22. for(int i=0;i<4;i++){
  23. Person person = new Person(i,"xiazdong-"+i,20+i);
  24. list.add(person);
  25. }
  26. Document document = DocumentHelper.createDocument();
  27. Element persons = DocumentHelper.createElement("persons");
  28. document.add(persons);
  29. for(int i=0;i<4;i++){
  30. persons.addElement("person").addAttribute("id", list.get(i).getId()+"");
  31. persons.addElement("name").addText(list.get(i).getName());
  32. persons.addElement("age").addText(list.get(i).getAge()+"");
  33. }
  34. String xml = document.asXML(); //用dom4j組織一個XML字符串
  35. response.setContentType("text/xml; charset=UTF-8"); //設置返回值的類型
  36. response.getOutputStream().write(xml.getBytes("UTF-8")); //設置返回值
  37. }
  38. }
如果讓浏覽器訪問,效果如下:
(注:Chrome打開總是顯示不出XML聲明。請用IE打開)
Copyright © Linux教程網 All Rights Reserved