java後臺呼叫HttpURLConnection類模擬瀏覽器請求例項

java後臺呼叫HttpURLConnection類模擬瀏覽器請求例項

這篇文章主要介紹了java後臺呼叫HttpURLConnection類模擬瀏覽器請求例項,該例項可用於介面呼叫,具有一定的實用價值,需要的朋友可以參考下。

一般在專案開發中難免遇到外部介面的呼叫,本文例項講述了java後臺呼叫HttpURLConnection類模擬瀏覽器請求的方法,可用於介面呼叫。分享給大家供大家參考。

具體實現方法如下:

package com.pcmall;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class HttpURLConnectionTest {
public static final String GET_URL = "http://*.*.*.*:8080/pos/interf/report/querySaleDailyCash?date=2016-05-26&md=00130806&skfs=&lx=1";
public static final String POST_URL = "http://*.*.*.*:8080/pos-web/interf/report/CallSaleDailyCash?date=2016-05-26&md=00130806&skfs=&lx=1";
/**
* 介面呼叫 GET
*/
public static void httpURLConectionGET() {
try {
URL url = new URL(GET_URL); // 把字串轉換為URL請求地址
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();// 開啟連線
connection.connect();// 連線會話
// 獲取輸入流
BufferedReader br = new BufferedReader(new InputStreamReader(
connection.getInputStream(), "UTF-8"));
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {// 迴圈讀取流
sb.append(line);
}
br.close();// 關閉流
connection.disconnect();// 斷開連線
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("失敗!");
}
}
/**
* 介面呼叫 POST
*/
public static void httpURLConnectionPOST() {
try {
URL url = new URL(POST_URL);
// 將url 以 open方法返回的urlConnection 連線強轉為HttpURLConnection連線
// (標識一個url所引用的遠端物件連線)
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();// 此時cnnection只是為一個連線物件,待連線中
// 設定連線輸出流為true,預設false (post 請求是以流的方式隱式的傳遞引數)
connection.setDoOutput(true);
// 設定連線輸入流為true
connection.setDoInput(true);
// 設定請求方式為post
connection.setRequestMethod("POST");
// post請求快取設為false
connection.setUseCaches(false);
// 設定該HttpURLConnection例項是否自動執行重定向
connection.setInstanceFollowRedirects(true);
// 設定請求頭裡面的各個屬性 (以下為設定內容的型別,設定為經過urlEncoded編碼過的from引數)
// application/x-javascript text/xml->xml資料
// application/x-javascript->json物件
// application/x-www-form-urlencoded->表單資料
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
// 建立連線
// (請求未開始,直到connection.getInputStream()方法呼叫時才發起,以上各個引數設定需在此方法之前進行)
connection.connect();
// 建立輸入輸出流,用於往連線裡面輸出攜帶的引數,(輸出內容為?後面的內容)
DataOutputStream dataout = new DataOutputStream(
connection.getOutputStream());
String parm = "storeId="   URLEncoder.encode("32", "utf-8"); // URLEncoder.encode()方法
// 為字串進行編碼
// 將引數輸出到連線
dataout.writeBytes(parm);
// 輸出完成後重新整理並關閉流
dataout.flush();
dataout.close(); // 重要且易忽略步驟 (關閉流,切記!)
System.out.println(connection.getResponseCode());
// 連線發起請求,處理伺服器響應 (從連線獲取到輸入流幷包裝為bufferedReader)
BufferedReader bf = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder(); // 用來儲存響應資料
// 迴圈讀取流,若不到結尾處
while ((line = bf.readLine()) != null) {
sb.append(bf.readLine());
}
bf.close(); // 重要且易忽略步驟 (關閉流,切記!)
connection.disconnect(); // 銷燬連線
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
httpURLConectionGET();
// httpURLConnectionPOST();
}
}

除錯輸出結果如下