Android与服务端通信之JSON格式

来源:互联网 发布:法拉利和保时捷 知乎 编辑:程序博客网 时间:2024/06/10 03:22
网络通信Json版
路径后加参数,表示返回Json格式数据给Android应用。
http://192.168.1.100:8080/videonews/ListServlet?format=json
不加参数表示默认返回xml格式数据
public class VideoNewsService
{
/*获取服务端资讯*/
  public static List<News> getJSONLastNews() throws Exception{
   String path="http://192.168.1.100:8080/videonews/ListServlet?format=json";
   URL url=new URL(path);
   HttpURLConnection conn=(HttpURLConnection) url.openConnection();
   conn.setConnectionTimeout(5000);
   conn.setRequestMethod("GET");
   if(conn.getResponseCode() == 200)  
   {
     InputStream inStream = conn.getInputStream();
return parseJSON(inStream);
 
 
   }
     return null;
  }
  /*解析服务器返回的JSON数据*/
  private static List<News> parseXML(InputStream inStream)
  {
    List<News> newses=new ArrayList<News>();
byte[] data = StreamTool.read(inStream);
String json = new String(data);
JSONArray array=new JSONArray(json);
for(int i=0;i<array.length();i++)
{
 //取得Json对象
 JSONObject jsonObject = array.getJSONObject(i);
 News news=new News(jsonObject.getInt("id"),jsonObject.getString("title"), jsonObject.getInt("timelength"));
 newses.add(news);
}
return newses;
    
  }
 


main.xml
<ListView
  android:layout_width="fill_parent";
  android:layout_height="wrap_content"
  android:id="@+id/listView"
/>
item.xml
<LinearLayout
<TextView
  android:id="@+id/title" 
>
<TextView
  android:id="@+id/timelength" 
>
</LinearLayout>




Android mainActivity:
    super.onCreate(savedInstanceState);
setContentView(R.layout.main);
    ListView listview = (ListView) this.findViewById(R.id.listview);
    List<News> videos =VideoNewsService.getJSONLastNews();
    List<HashMap<String , Object>> data =new ArrayList<HashMap<String,Object>>();
    for(News news : videos)
    {
      HashMap<String,Object> item=new HashMap<String,Object>();
      item.put("id",news.getId());
      item.put("title",news.getTitle());
      item.put("timelength",news.getTimelength());
       data.add(item);
    }
       SimpleAdapter adapter = new SimpleAdapter(this,data,R.layout.item,new String[]{"title","timelength"},new int[]{R.id.title,R.id.timelength});
       listView.setAdapter(adapter);


服务端
Web技术
1,新建servlet
json格式
[{id:56,title:"XXX",timelength:90},{id:16,title:"XXb",timelength:30}]
 public class ListServlet extends HttpServlet
 {
   private static final long serialVersionUID = 1L;
   private VideoNewsService service =new VideoNewsServiceBean();
 protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
  {
  List<News> videos = service.getLastNews();
  String format=request.getParameter("format");
  if("json".equals(format))
  {
    StringBuilder  builder = new StringBuilder();
builder.append('[');
    for(News news : videos)
    {
       builder.append('{');
  builder.append("id:").append(news.getId()).append(',');
  builder.append("title:\"").append(news.getTitle()).append("\",");      //反斜杠转义
  builder.append("timelength:").append(news.getTimelength());
  builder.append("},");
    }
builder.deleteChatAt(builder.length() - 1);
builder.append(']');
request.setAttribute("json",builder.toString());
request.getRequestDispather("/WEB-INF/page/jsonvideonews.jsp").forward(request,response);
  }else 
  {
  request.setAttribute("videos",videos);
  request.getRequestDispather("/WEB-INF/page/videonews.jsp").forward(request,response);
}
}
News类
public class News
{
  private Integer id;
  private String  title;
  private Integer timelength;
  public News(){}
  public News(Integer id, String title,Integer timelength)
  {
    this.id= id;
    this.title=title;
    this.timelength=timelength;
  }
  public Integer getId()
  {
    return id;
  }
  public void setId(Integer id)
  {
    this.id=id;
  }
  public String getTitle()
  {
    return title;
  }
  public void setTitle(String title)
  {
    this.title=title;
  }
  public Integer getTimelength()
  {
    return timelength;
  }
  public void setTimelength(Integer timelength)
  {
    this.timelength = timelength;  
  } 

VideoNewsServiceBean  //实现类
public class VideoNewsServiceBean implements VideoNewsService

  public List<News> getLastNews()
  {
     List<News> newses = new ArrayList<News>();
newses.add(new News(35,"喜洋洋",90));
newses.add(new News(12,"灰太狼",30));
newses.add(new News(56,"红太狼",40));
return newses;
  }
}
public interface VideoNewsService
{
 /*获取视频资讯*/
  public List<News> getLastNews();
}
 
jsonvideonews.jsp
<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>${json}
0 0
原创粉丝点击