1. 程式人生 > >java模擬http請求小例子

java模擬http請求小例子

工作當中經常需要用java程式 傳送請求來獲取資料集,今天整理一個簡單的小例子程式

基本步驟

1.通過統一資源定位器(java.net.URL)獲取聯結器(java.net.URLConnection)

2.設定請求引數

3.傳送請求

4.以輸入流的形式獲取返回內容

5.關閉輸入流

public static String sendPost(String url,JSONObject jsonObject){
    //獲取連線
    URL u;
    String result = "";
    HttpURLConnection httpUrlConnection = null;
    InputStream inStrm = null;
    BufferedReader in = null;
try {
u = new URL(url);
   URLConnection urlConnection = u.openConnection();
   httpUrlConnection = (HttpURLConnection) urlConnection; 
   //設定請求引數
   httpUrlConnection.setDoOutput(true);//http正文內,因此需要設為true, 預設情況下是false;  
   httpUrlConnection.setDoInput(true);//設定是否從httpUrlConnection讀入,預設情況下是true; 
   httpUrlConnection.setUseCaches(false);//post請求不能使用快取
   httpUrlConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");//設定傳送的內容型別是可序列化的java物件  
   httpUrlConnection.setRequestMethod("POST");//設定請求方法未POST,預設為GET
   httpUrlConnection.connect(); 
   
   OutputStream outStrm = httpUrlConnection.getOutputStream(); 
   // 現在通過輸出流物件構建物件輸出流物件,以實現輸出可序列化的物件。
   DataOutputStream objOutputStrm = new DataOutputStream(outStrm);
   // 向物件輸出流寫出資料,這些資料將存到記憶體緩衝區中
   byte[] bytes = jsonObject.toString().getBytes("UTF-8");
   objOutputStrm.write(bytes, 0, bytes.length); 
   //重新整理物件輸出流,將任何位元組都寫入潛在的流中(些處為ObjectOutputStream)   
   objOutputStrm.flush();  
   // 關閉流物件。此時,不能再向物件輸出流寫入任何資料,先前寫入的資料存在於記憶體緩衝區中
   objOutputStrm.close(); 
   // 呼叫HttpURLConnection連線物件的getInputStream()函式,將記憶體緩衝區中封裝好的完整的HTTP請求電文傳送到服務端。
   inStrm = httpUrlConnection.getInputStream(); //<===注意,實際傳送請求的程式碼段就在這裡 
   
   in = new BufferedReader(new InputStreamReader(inStrm));
StringBuffer sb = new StringBuffer("");
   String lines;
   while ((lines = in.readLine()) != null) {
       lines = new String(lines.getBytes(), "utf-8");
       sb.append(lines);
   }
   result = sb.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
if (null != httpUrlConnection) {
httpUrlConnection.disconnect();
        }
if (null != inStrm) {
inStrm.close();
        }
if (null != in) {
httpUrlConnection.disconnect();
        }
      } catch (IOException ex) {
           System.out.println("網路關閉異常");
      }
}
    return result;
    }

 public static void main(String[] args) throws Exception {
String url = "http://event.m.shihou.tv/lion_module_share_temp/config/list";
String paramStr = "{}";
String result = sendPost(url,JSONObject.parseObject(paramStr));

System.out.println(result );

}