【问题标题】:Getting an exception while using HttpResponse response = client.execute(request);使用 HttpResponse 时出现异常 response = client.execute(request);
【发布时间】:2011-07-14 16:30:39
【问题描述】:

我正在尝试从服务器请求响应,但是当我使用“HttpResponse response = client.execute(request);”时,程序进入了异常情况。

这是我的代码:

从服务器获取响应的函数

public String executeHttpGet(String username, String password) throws Exception {

    BufferedReader in = null;
    try {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet();
        request.setURI(new URI("http://emapzoom.com/setting/device_login"+ "?device_id=" +password+ "&login_name="+ username));



        HttpResponse response = client.execute(request);
        in = new BufferedReader (new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {
            sb.append(line + NL);
        }
        in.close();
        String page = sb.toString();
        System.out.println(page);
        return page;
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

活动中使用的代码

     try{

            test=executeHttpGet(name,pass);

        }catch(Exception e){

        }

当我执行时,程序进入catch块!

请帮帮我!!! 提前谢谢!

【问题讨论】:

标签: android exception httpresponse


【解决方案1】:

如果您针对任何版本的 Android >= Honeycomb 进行构建,您将无法在主线程上进行网络调用。试着把它放在一个异步任务中,看看它是否有效。

【讨论】:

    【解决方案2】:

    dell116的回答是对的。

    我在 ICS 上遇到了同样的问题,并使用以下代码异步解决:

    private void getResponseThread(final String url) {
        new Thread(new Runnable() {
            public void run() {
                String cadHTTP = getResponse(url);
                Message msg = new Message();
                msg.obj = cadHTTP;
                handlerHTTP.sendMessage(msg);
            }
        }).start();
    }
    
    private String getResponse(String url) {
        HttpClient httpClient = new DefaultHttpClient();
        HttpGet del = new HttpGet(url);
        del.setHeader("content-type", "application/json");
    
        String respStr;
        try {
            HttpResponse resp = httpClient.execute(del);
            respStr = EntityUtils.toString(resp.getEntity());
        } catch(Exception ex) {
            Log.e("RestService","Error!", ex);
            respStr = "";
        }
    
        Log.e("getResponse",respStr);
        return respStr;
    }
    
    private Handler handlerHTTP = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            String res = (String) msg.obj;
            //CONTINUE HERE
            nexTask(res);
        }
    };
    

    问候! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多