Android學習(51) -- 使用HttpClient框架做GET提交

發送get請求

  • 創建一個客戶端對象

    HttpClient client = new DefaultHttpClient();

  • 創建一個get請求對象

    HttpGet hg = new HttpGet(path);

  • 發送get請求,建立連接,返回響應頭對象

    HttpResponse hr = hc.execute(hg);

  • 獲取狀態行對象,獲取狀態碼,如果爲200則說明請求成功

    if(hr.getStatusLine().getStatusCode() == 200){
        //拿到服務器返回的輸入流
        InputStream is = hr.getEntity().getContent();
        String text = Utils.getTextFromStream(is);
    }
    

代碼

   public void get(View v){
        EditText et_name = (EditText) findViewById(R.id.et_name);
        EditText et_pass = (EditText) findViewById(R.id.et_pass);

        final String name = et_name.getText().toString();
        final String pass = et_pass.getText().toString();


        Thread t = new Thread(){
            @Override
            public void run() {
                String path = "http://192.168.1.130/Web/servlet/CheckLogin?name=" + 
                URLEncoder.encode(name) + "&pass=" + pass;
                //使用httpClient框架做get方式提交
                //1.創建HttpClient對象
                HttpClient hc = new DefaultHttpClient();

                //2.創建httpGet對象,構造方法的參數就是網址
                HttpGet hg = new HttpGet(path);

                //3.使用客戶端對象,把get請求對象發送出去
                try {
                    HttpResponse hr = hc.execute(hg);
                    //拿到響應頭中的狀態行
                    StatusLine sl = hr.getStatusLine();
                    if(sl.getStatusCode() == 200){
                        //拿到響應頭的實體
                        HttpEntity he = hr.getEntity();
                        //拿到實體中的內容,其實就是服務器返回的輸入流
                        InputStream is = he.getContent();
                        String text = Utils.getTextFromStream(is);

                        //發送消息,讓主線程刷新ui顯示text
                        Message msg = handler.obtainMessage();
                        msg.obj = text;
                        handler.sendMessage(msg);
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        };
        t.start();

    }

public class Utils {

    public static String getTextFromStream(InputStream is){

        byte[] b = new byte[1024];
        int len = 0;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try {
            while((len = is.read(b)) != -1){
                bos.write(b, 0, len);
            }
            String text = new String(bos.toByteArray());
            bos.close();
            return text;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}
發佈了101 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章