2015年4月1日 星期三

Android- HttpURLConnection Get

目前最主要的連線方法分為 : POST GET
今天我們就已GET的方法去讀取位置資料並且顯示出來
至於為什麼不用HttpClient 就點此連結

直接進入正題
為了避免大大使用後產生 NetworkOnMainThreadException
所以用AsyncTask方式
程式碼如下 :
    public class Task extends AsyncTask<Void,Void,String>{
        
        @Override
        public void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        public String doInBackground(Void... arg0) {
            
            URL url = null;
            BufferedReader reader = null;
            StringBuilder stringBuilder;
         
            try
            {
              // create the HttpURLConnection
              url = new URL("http://www.jmarshall.com/easy/http/");
              HttpURLConnection connection = (HttpURLConnection) url.openConnection();
               
              // 使用甚麼方法做連線
              connection.setRequestMethod("GET");
               
              // 是否添加參數(ex : json...等)
              //connection.setDoOutput(true);
               
              // 設定TimeOut時間
              connection.setReadTimeout(15*1000);
              connection.connect();
         
              // 伺服器回來的參數
              reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
              stringBuilder = new StringBuilder();
         
              String line = null;
              while ((line = reader.readLine()) != null)
              {
                stringBuilder.append(line + "\n");
              }
              return stringBuilder.toString();
            }
            catch (Exception e)
            {
              e.printStackTrace();
            }
            finally
            {
              // close the reader; this can throw an exception too, so
              // wrap it in another try/catch block.
              if (reader != null)
              {
                try
                {
                  reader.close();
                }
                catch (IOException e)
                {
                  e.printStackTrace();
                }
              }
            }
          
            return null;
        }

        @Override
        public void onPostExecute(String result) {
            super.onPostExecute(result);
            if(!"".equals(result) || null != result){
                text.setText(result);
            }
        }
      }

參考資料 : 來源
參考資料 : 解决HttpURLConnection setConnectTimeout超时无响应的问题

歡迎轉載,請註明出處。

4 則留言:

  1. 請問版主 我現在剛學android 連到mysql,是不是要放棄使用HttpClient改用HttpURLConnection這個了

    回覆刪除
  2. 請問版主 我現在剛學android 連到mysql,是不是要放棄使用HttpClient改用HttpURLConnection這個了

    回覆刪除
    回覆
    1. 就目前能解決您的需求當然先用 HttpClient ,之後時間除充裕後,再慢慢改回 HttpUrlConnection 會比較好

      刪除
  3. 請問有POST方式嗎,謝謝

    回覆刪除