我的问题是android怎么得到servlet查询出的数据?
代码如下:
服务器端:
[code="java"]toDo = new ToDo();
List list = toDo.queryUser(mySession);
if(list.size()>0)
{
pw.write("结果"+list);
for(int i = 0;i<list.size();i++)
{
System.out.println("========str======"+list.get(i));
}
}
else
{
pw.write("没有有效的数据");
System.out.println("没有有效的数据");
}[/code]
客户端:
[code="java"] StringBuffer str = userManager.result();
if(str!=null)
{
showResult.setText(str.toString());
}
else
{
showResult.setText("没有有效的数据!");
}[/code]
result():
[code="java"]StringBuffer sb = new StringBuffer();
try {
String urlAddress = "http://192.168.1.102:8080/qualityserver/result.do";
String body = getContent(urlAddress);
JSONArray array = new JSONArray(body);
System.out.println("######array&&&&&"+array.length());
for(int i=0;i<array.length();i++)
{
JSONObject obj = array.getJSONObject(i);
sb.append("username:").append(obj.getInt("username")).append("\t");
sb.append("password:").append(obj.getInt("password")).append("\n");
}
System.out.println("######sb&&&&&"+sb);
return sb;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb;[/code]
servlet下,设定json
[code="java"] JSONArray array = new JSONArray();
for (User bean : list) {
JSONObject obj = new JSONObject();
try {
obj.put("username",bean.getUserName());
obj.put("pass",bean.getPass());
} catch(Exception e) {}
array.put(obj);
}
pw.write(array.toString());[/code]
一般用httpClient
[code="java"] String str = "http://www.google.com.hk/search?q=xxx";
HttpGet request = new HttpGet(str);
String result = "";
try {
DefaultHttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(request);
if (response.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(response.getEntity());
}
} catch (Exception e) {
e.printStackTrace();
return;
}[/code]
上面的result就是返回的字符串,然后你解析就可以了
webView.loadUrl(url); 这个直接读到网页,就显示了
看错误可能是body返回null或者格式不对,你看看 new JSONArray(body) 之前的body的字符串是什么 ?
我的意思是你debug一下,看一下getContent(urlAddress)返回的是什么?
[color=red]返回的值是:??[admin4, admin]\n [/color]
有乱码阿,json格式以"["开头,是你服务端返回的字符串有问题,你仔细看看服务端程序:)
[color=red]pw.write("结果"+list.toString());[/color]
返回的是 "结果"+list.toString()?
[code="java"]TextView message = (TextView)findViewById(R.id.tv_message);
message.setText("message);[/code]
tv_message是画面上TextView控件的ID
json读取 你看下 http://tangshanxj.blog.163.com/blog/static/30113717201010282318941/
你的json格式在servlet生成的不对,你参考下面body生成。
[code="java"] try {
String body = "{\"username\":\"admin4\",\"pass\":\"admin\"}";
JSONObject obj = new JSONObject(body);
String str1 = null;
String str2 = null;
str1 = obj.get("username").toString();
str2 = obj.get("pass").toString();
Log.i("BeforeClick", str1 + " : " + str2);
} catch (Exception e) {
e.printStackTrace();
}[/code]