前言
已經有幾天沒有寫博客了 , 原因是最近生活中有大量的事情, 儘管每天都在學習 , 但是卻沒有將知識點記錄在博客中 , 感覺這樣非常不好 .
- 以後一定要堅持寫博客 , 記錄自己成長曆程
- 希望可以在這裏找到一些志同道合的朋友 , 一起努力 , 一起進步.
總結歸類
- Java創建代理連接對象
- Java發送Post請求
- Java發送Get請求
代碼
Java創建代理連接對象
/**
* 1.返回代理對象
* @param proxyIp
* @param proxyPort
* @return
*/
public Proxy setProxy(String proxyIp , int proxyPort ){
try{
InetSocketAddress socketAddress
= new InetSocketAddress(proxyIp , proxyPort );
Proxy proxy = new Proxy(Proxy.Type.HTTP , socketAddress );
return proxy;
}catch(Exception e ){
e.printStackTrace();
}
return null;
}
Java發送Get請求
/**
* 2.發送Get請求
* @param url
* @param params
* 表示鏈接後面的一些參數 如name=ghoset&pass=ghoset
* @return
*/
public String sendGet(String url , String params ) throws Exception {
StringBuilder builder = new StringBuilder();
if(params != null || params.length() != 0 ){
url = url + "?" + params; //重新構造URL鏈接
}
URL Url = new URL(url );
URLConnection conn = Url.openConnection();
// 設置代理
//URLConnection conn = Url.openConnection(setProxy(proxyHost, proxyPort));
// 如果需要設置代理賬號密碼則添加下面一行
//conn.setRequestProperty("Proxy-Authorization", "Basic "+Base64.encode("account:password".getBytes()));
//發送數據包(可以直接抓取瀏覽器數據包然後複製)
conn.setRequestProperty("accept", "*/*" );
conn.setRequestProperty("Connection", "Keep-Alive" );
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36");
conn.connect();
//接收響應的數據包
Map<String , List<String > > map = conn.getHeaderFields();
Set<String > set = map.keySet();
for(String k : set ){
String v = conn.getHeaderField(k );
System.out.println(k + ":" + v );
}
//返回瀏覽器的輸出信息
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream() ));
String line = reader.readLine();
line = new String(line.getBytes() , "gbk" );
//實現將字符串轉成gbk類型顯示.
while(line != null ){
builder.append(line +"\r\n" );
System.out.println(line );
line = reader.readLine();
}
//釋放資源
reader.close();
return builder.toString();
}
Java發送Post請求
/**
* 3.發送POST請求
* @param url
* @param params
* @param forData
* @return
* @throws Exception
*/
public String sendPost(String url , String params , String formData) throws Exception{
StringBuilder builder = new StringBuilder();
if(!(params == null || params.length() == 0) ){
url += ("?" + params );
}
URL Url = new URL(url );
URLConnection conn = Url.openConnection();
//如果設置代理 , 和發送GET一樣.
conn.setRequestProperty("accept", "*/*" );
conn.setRequestProperty("Connection", "Keep-Alive" );
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36");
//設置之後就可以發送POST請求了
conn.setDoInput(true );
conn.setDoOutput(true );
//獲取它的輸出流 , 直接寫入post請求
PrintWriter writer = new PrintWriter(conn.getOutputStream() );
writer.print(formData );
writer.flush();
//獲取瀏覽器的返回數據
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream() ) );
String line = reader.readLine();
line = new String(line.getBytes() , "utf-8" ); //解決亂碼的問題
while(line != null ){
System.out.println(line );
builder.append(line + "\r\n" );
line = reader.readLine();
}
reader.close();
writer.close();
return builder.toString();
}
測試方法
public static void main(String[] args) {
HttpRequestUtil request = new HttpRequestUtil();
try{
Proxy proxy = request.setProxy(InetAddress.getLocalHost().getHostAddress() , 8888 );
System.out.println(proxy );
//Get請求
request.sendGet("http://localhost/review/html/index.php", "username=ghoset&password=ghoset" );
//Post請求
String formData = "username=ghoset&password=ghoset";
String rs = request.sendPost("http://localhost/review/java/index.php", null , formData );
}catch(Exception e ){
e.printStackTrace();
}