Получение исключения при использовании HttpResponse response = client.execute (request); - PullRequest
1 голос
/ 14 июля 2011

Я пытаюсь запросить ответ от сервера, но когда я использую «HttpResponse response = client.execute (request);», программа вводит исключительную ситуацию.

Вот мой код:

функция для получения ответа от сервера

public String executeHttpGet (String username, String password) выдает исключение {

    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!

, пожалуйста, помогите мне !!!спасибо заранее!

Ответы [ 2 ]

2 голосов
/ 02 мая 2012

Если вы работаете с любой версией Android> = Honeycomb, вы не можете совершать сетевые вызовы в главном потоке.Попробуйте поместить это в асинхронную задачу и посмотрите, работает ли она.

0 голосов
/ 05 декабря 2012

Ответ 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);
    }
};

Привет! :)

...