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 );
}