网友通过本文主要向大家介绍了Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)
学习Android有一段时间了,对服务器端有很深的好奇,决定对服务器端的实现进行一些研究,这里实现了一个简单的小例子,用于获取服务器端的json数据,例子很简单,适合初学者学习使用。
服务器端
首先我们搭建服务器端,服务器端使用struct2架构,对该架构不熟悉的人可以花一点时间看看慕课网上的相关视频,这里用myeclipse实现服务器端。
新建一个web工程,这里要引入struct2相关,方法是:点击新建的web工程邮件-》myeclipse选项-》project facets->选择安装struct2相关即可。

看一下相关代码:
struts.xml:
index.jsp
web.xml:
Test2 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 *.action
下面是JSONAction.java:
package com.shao.action;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import com.shao.domain.Music;
public class JSONAction extends ActionSupport implements ServletRequestAware,
ServletResponseAware {
/**
*
*/
private static final long serialVersionUID = -3604892179657815531L;
private HttpServletRequest request;
private HttpServletResponse response;
private String format;
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
public void json(){
List list = new ArrayList();
Gson gson = new Gson();
Music m1 = new Music();
m1.setId(1);
m1.setAuthor("周杰伦");
m1.setName("外婆");
m1.setTime("04:04");
list.add(m1);
Music m2 = new Music();
m2.setId(2);
m2.setAuthor("周杰伦");
m2.setName("半兽人");
m2.setTime("04:05");
list.add(m2);
Music m3 = new Music();
m3.setId(3);
m3.setAuthor("周杰伦");
m3.setName("乌克丽丽");
m3.setTime("02:55");
list.add(m3);
java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken>() {
}.getType(); //指定type
String beanListToJson = gson.toJson(list,type); //list转换成json字符串
System.out.println("GSON-->"+beanListToJson);
try {
response.setCharacterEncoding("UTF-8");
this.response.getWriter().write(beanListToJson);
} catch (IOException e) {
e.printStackTrace();
}
}
}
最后是Music类:(这个类在Android程序中也需要)
package com.shao.domain;
public class Music {
private Integer id;
private String name;
private String time;
private String author;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
好了,下面选择工程右键:run as->myeclipse server application:

注意,本项目的端口选择的是8888,yayun表示本机。
这时在浏览器地址栏输入:http://yayun:8888/Test2/getjson.action
出现如下 :

说明服务器端搭建成功。另外,本系统json解析用到了Gson的jar包,要自己导入哦,下载Gson引入到项目中,Android端也需要这个jar包。
移动端
移动端用eclipse实现

首先是JsonClientActivity:
package com.test.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.example.testandroid.R;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class JsonClientActivity extends Activity {
private Button update;
private ListView listView;
private String jsonResult;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
jsonResult=(String) msg.obj;
};
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
update = (Button) findViewById(R.id.update);
listView = (ListView) findViewById(R.id.list);
update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String urlStr = "http://192.168.0.103:8888/Test2/getjson.action";
getJson(urlStr);
String jString=jsonResult;
List list = GsonUtil.getListFromJson(jString);
System.out.println(list);
if (list != null) {
System.out.println(list);
List 
