android-async-http开源项目对服务器端返回JSON数据的处理
2015-05-05 01:12
861 查看
android-async-http开源项目对服务器端返回JSON数据的处理
一、在JavaEE项目中搭建环境1. 导入相关jar包
2. 搭建相关的包和类
3.类中的方法简单实现
User:
声明以下属性,并实现无参构造器和有参构造器,以及各自的get和set方法
UserDao:
UserDaoImpl:
JsonServlet:
[java] view
plaincopy
<span style="white-space:pre"> </span>protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 来自于数据库
UserDao daoImpl = new UserDaoImpl();
List<User> entities = daoImpl.findAll();
// 把List集合转换成一个json的数据格式
JSONArray jsonArray = JSONArray.fromObject(entities);
response.setContentType("application/json");// 响应类型 json的数据
response.getWriter().write(jsonArray.toString());
response.getWriter().close();
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
二、Android项目中的对服务器端返回JSON数据的处理
1. 导入jar包
2. 添加权限
3. 实现布局文件
[java] view
plaincopy
<!-- MVC模式中的V层 -->
<ListView
android:id="@+id/lv_users"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
4.MainActivity.java中的主要内容见如下详细代码:
[java] view
plaincopy
package www.csdn.net.activity;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
public class MainActivity extends Activity {
private ListView lv_users;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_users = (ListView) findViewById(R.id.lv_users);
initData();//M层 //initData本身在一个子线程中处理
}
private void initData() {
// 访问服务器端 获取json数据
// 创建客户端对象
AsyncHttpClient client = new AsyncHttpClient();
String url = "http://172.16.237.227:8080/video/JsonServlet";
Toast.makeText(this, "发送请求到服务器", Toast.LENGTH_LONG).show();
client.get(url, new JsonHttpResponseHandler() {
// 返回JSONArray对象 | JSONObject对象
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONArray response) {
super.onSuccess(statusCode, headers, response);
if (statusCode == 200) {
//存储数组变量
List<String> objects = new ArrayList<>();
for (int i = 0; i < response.length(); i++) {
try {
// 获取具体的一个JSONObject对象
JSONObject obj = response.getJSONObject(i);
objects.add(obj.getString("name"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//C控制层主要就是对数据处理
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, objects);
//设置显示的内容
lv_users.setAdapter(adapter);// C空置
}
}
});
}
}
5. 实现效果如下图所示:
三、补充
1. JSONObject对象可以通过get("属性名"),getString("属性名"),getInt("属性名")等这些方法,来获取指定属性名的属性值。
例如:在此案例中可以通过System.out.println("序号:" + obj.getInt("id") + "姓名:"+ obj.getString("name") +"---密码:"+ obj.getString("pass") +"---"+ obj.get("regDate"));来验证一下结果。
2. 出现的bug原因可能有:
Internet权限没加,服务器没启动,访问服务器路径有错,没有获取控件对象,设置显示的内容应为lv_users.setAdapter()方法而不是setText()方法等。
相关文章推荐
- android-async-http开源项目对服务器端返回JSON数据的处理
- android-async-http开源项目对服务器端返回JSON数据的处理
- Android---利用android-async-http开源项目返回json数据
- Android---利用android-async-http开源项目返回json数据
- Android---利用android-async-http开源项目返回json数据
- android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据
- android项目,从服务器端返回JSON数据,在android客户端进行显示。
- android使用asynchttp网络请求服务器返回json数据并显示在手机
- Android客户端处理服务器端返回的Json格式数据
- Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程
- Android中获取PHP服务器端Json返回数据注意事项
- Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程
- Android 手机端与服务器端通过http交换数据 Json
- 【转载】使用Json比用string返回数据更友好,也更面向对象一些 |Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码
- 开源项目之Android async-http(异步 HTTP 客户端开发包)
- 关于开源项目android-async-http
- 开源项目之Android async-http(异步 HTTP 客户端开发包)
- Android学习之——(3)项目中的WebService返回数据处理学习
- 开源中国源码学习数据篇(一)之android-async-http框架和AsyncTask
- 09_android入门_採用android-async-http开源项目的GET方式或POST方式实现登陆案例