WdWheyr
2011-05-18 09:36
浏览 218

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]
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • iteye_8576 2011-05-18 15:37
    已采纳

    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]

    打赏 评论
  • iteye_8576 2011-05-18 10:02

    一般用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就是返回的字符串,然后你解析就可以了

    打赏 评论
  • yigerendedongtian 2011-05-18 10:12

    webView.loadUrl(url); 这个直接读到网页,就显示了

    打赏 评论
  • iteye_8576 2011-05-18 10:26

    看错误可能是body返回null或者格式不对,你看看 new JSONArray(body) 之前的body的字符串是什么 ?

    打赏 评论
  • iteye_8576 2011-05-18 10:29

    我的意思是你debug一下,看一下getContent(urlAddress)返回的是什么?

    打赏 评论
  • iteye_8576 2011-05-18 12:21

    [color=red]返回的值是:??[admin4, admin]\n [/color]
    有乱码阿,json格式以"["开头,是你服务端返回的字符串有问题,你仔细看看服务端程序:)

    打赏 评论
  • iteye_8576 2011-05-18 13:10

    [color=red]pw.write("结果"+list.toString());[/color]
    返回的是 "结果"+list.toString()?

    打赏 评论
  • iteye_8576 2011-05-18 13:37

    [code="java"]TextView message = (TextView)findViewById(R.id.tv_message);
    message.setText("message);[/code]

    tv_message是画面上TextView控件的ID

    打赏 评论
  • iteye_8576 2011-05-18 13:51
    打赏 评论
  • iteye_8576 2011-05-18 15:13

    你的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]

    打赏 评论

相关推荐 更多相似问题