天天看點

通過HttpURLConnection進行網絡請求

通過HttpURLConnection進行網絡請求

建立一個工具類,在工具類中寫一個方法 形參為網址

在方法中:

//聲明HttpURLConnection對象
HttpURLConnection conn=null;
在try中
try{
//1 擷取URL對象 
URL url= new  URL( “網址 ”)
//2 此處的urlConnection對象實際上是根據URL的請求協定(此處是http)生成的URLConnection類的子類HttpURLConnection,故此處最好将其轉化為HttpURLConnection類型的對象,以便用到
URLConnection urlConnection = url.openConnection();
conn=(HttpURLConnection) urlConnection;
//3 逾時設定
 conn.setConnectTimeout();//連接配接逾時 機關毫秒
conn.setReadTimeout();//讀取逾時 機關毫秒
//4 設定請求的方法   預設是GET 
//GET  向伺服器送出的參數在網址後面
//POST 送出的參數直接寫到伺服器上 相對安全
conn.setRequestMethod("GET/POST");
//5 允許向外寫資料  
conn.setDoOutput(true);
//6 設定是否從httpUrlConnection讀入,預設情況下是true;    
conn.setDoInput(true);
//7 設定是否使用緩存
conn.setUseCaches(false);
//8 設定請求頭   Content-Type類型 也可以根據情況寫其他的類型
conn.setRequestProperty( "Content-Type", "application/json;charset=UTF-8" ); 
//設定傳送的内容類型是可序列化的java對象    (如果不設此項,在傳送序列化對象時,當WEB服務預設的不是這種類型時可能抛java.io.EOFException)    
httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");
//9 設定請求頭或響應頭
setRequestProperty(key,value);
addRequestProperty(key,value);
setRequestProperty和addRequestProperty的差別就是,setRequestProperty會覆寫已經存在的key的所有values,有清零重新指派的作用。而addRequestProperty則是在原來key的基礎上繼續添加其他value。
//10 向伺服器寫資料 此處getOutputStream會隐含的進行connect
OutputStream os =conn.getOutputSteam();
byte[] data=String.getBytes();
os.write(data);
os.flush();
os.close();

// **********用于檢查上傳的内容**********
StringBuffer strBuf=new StringBuffer();
         BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream()));
         String line=null;
         while((line=reader.readLine())!=null){
             strBuf.append(line).append("\n");
         }
         res=strBuf.toString();
         System.out.println(res);
         reader.close();
// **********用于檢查上傳的内容**********
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(conn!=null){
                conn.disconnect();
                conn=null;
            }
        }
           

在需要網絡請求的類中,建立一個子線程,去調用該方法傳入實參網址即可