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}
路径后加参数,表示返回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
- Android与服务端通信之JSON格式
- Android与服务端网络通信之XML格式
- Android之与服务端通信一
- Android客户端与PHP服务端通信(二)---JSON交互
- android如何与服务端通信
- Android网络编程之TCP通信----简单客户端与服务端通信
- Android网络编程之UDP通信----简单客户端与服务端通信
- Flex使用JSON格式与Java通信
- php服务端与android客户端socket通信
- php服务端与android客户端socket通信
- php服务端与android客户端socket通信
- android 蓝牙客户端与服务端通信
- php服务端与android客户端socket通信
- 基于WebSocket的Android与服务端通信
- Android与服务端使用Https加密通信
- Android客户端与JAVA服务端JSON传值
- android客户端同php服务端进行XML/JSON通信
- Android笔记之 以JSON方式与服务器通信
- UVA 11991 STL中map、vector的应用
- 关闭所有子窗口及所属父窗口事件
- java中关于Map的九大问题
- work_weipa_radiobutton切换fragment
- map常见用法——POJ 3481
- Android与服务端通信之JSON格式
- android常用命令
- FPGA布局布线
- uva1169 Robotruck
- (Class 'ZipArchive' not found )linux apache 添加 zip模块
- 打开eclipse,竟然package explorer出现了NullpointException
- Eric4菜鸟安装指南(windows篇)
- Java版小球碰撞
- hdu-1233-还是畅通工程