一,服务器返回JSONObject类型的值
private void AsyncHttpClient_demo2(String userName, String userPass) {
AsyncHttpClient client = new AsyncHttpClient();
String url = "http://192.168.1.1:8080/Server/loginServlet";
// 创建请求参数的封装的对象
RequestParams params = new RequestParams();
// 设置请求的参数名和参数值
params.put("username", userName);
// 设置请求的参数名和参数
params.put("userpass", userPass);
//Toast.makeText(LoginActivity.this, "发送请求到服务器", Toast.LENGTH_LONG).show();
client.get(url,params, new JsonHttpResponseHandler() {
// 返回JSONArray对象 | JSONObject对象
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONObject response) {
super.onSuccess(statusCode, headers, response);
if (statusCode == 200) {
// Toast.makeText(LoginActivity.this, "statusCode的值:L"+statusCode, 1).show();
//存储数组变量
Toast.makeText(LoginActivity.this, "返回值:"+response.toString(), 1).show();
//C控制层主要就是对数据处理
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(LoginActivity.this, android.R.layout.simple_list_item_1, objects);
//设置显示的内容
// lv_users.setAdapter(adapter);// C空置
}
}
});
}
注意如上:public void onSuccess(int statusCode, Header[] headers, JSONObject response)方法里response参数类型应该根据返回值类型设定!
二,服务器返回JSONArray类型的值
private void AsyncHttpClient_demo2(String userName, String userPass) {
// TODO Auto-generated method stub
AsyncHttpClient client = new AsyncHttpClient();
String url = "http://192.168.1.1:8080/Server/loginServlet";
// 创建请求参数的封装的对象
RequestParams params = new RequestParams();
// 设置请求的参数名和参数值
params.put("username", userName);
// 设置请求的参数名和参数
params.put("userpass", userPass);
//Toast.makeText(LoginActivity.this, "发送请求到服务器", Toast.LENGTH_LONG).show();
client.get(url,params, new JsonHttpResponseHandler() {
// 返回JSONArray对象 | JSONObject对象
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONArray response) {
super.onSuccess(statusCode, headers, response);
if (statusCode == 200) {
//存储数组变量
//Toast.makeText(LoginActivity.this, "返回值:"+response.toString(), 1).show();
List<String> objects = new ArrayList<String>();
for (int i = 0; i < response.length(); i++) {
try {
// 获取具体的一个JSONObject对象
JSONObject obj = response.getJSONObject(i);
objects.add((String) obj.get("rtmsg"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//listview加载适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(LoginActivity.this, android.R.layout.simple_list_item_1, objects);
//设置显示的内容
lv_users.setAdapter(adapter);// C空置
}
}
});
}
三.不清楚服务器的回传值类型
这种情况先将response类型设成String类型,然后JsonHttpResponseHandler()也要改成StringHttpResponseHandler然后:
- 可以先做简单判断
if(response.startWith("{")) result= new JSONObject(response); else result=new JSONArray(response);
- 也可以
try{
result= new JSONObject(response);
}catch(JSONException e){
result=new JSONArray(response);
}
具体代码不表
参考链接:
http://blog.csdn.net/lyy1104/article/details/27106971
http://blog.csdn.net/bruce_shan/article/details/50509909
官网:http://loopj.com/android-async-http/