android和web交互

我的问题是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]