java模擬post請求登錄貓撲示例分享
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import java.util.StringTokenizer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class TestPost {
public static void main(String args[]) throws IOException{
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入用戶名:");
String user_name = scanner.next();
System.out.println("請輸入密碼:");
String password = scanner.next();
testPost(user_name , password,"d:/fileDown2.txt");
testJsoup();
}
public static void testPost(String user_name , String password,String outPath) throws IOException{
String login ="";
URL url = new URL("http://passport.mop.com");
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();//建立鏈接
connection.setInstanceFollowRedirects(false);
connection.setRequestProperty("Connection","keep-alive");
connection.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36");
connection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
connection.setDoInput(true);
connection.setDoOutput(true);
// connection.disconnect();
String str = connection.getHeaderField("Location");//獲得重定向的url地址
URL newURL = new URL(str);
// String cookies = getCookies(connection);
HttpURLConnection conn = (HttpURLConnection) newURL.openConnection();
conn.setRequestProperty("Referer", str);//瀏覽器向 WEB 服務器表明自己是從哪個 網(wǎng)頁/URL 獲得/點擊 當前請求中的網(wǎng)址/URL
// conn.setRequestProperty("Cookie", cookies); //發(fā)送設置cookie:
conn.setRequestProperty("Connection","keep-alive");
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(),"utf-8");
login =login+"user_name="+user_name+"&"+"password="+password;
out.write(login);
out.flush();
out.close();
InputStream inputStream = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
reader.close();
//鏈接到personal頁面
String headerName = null;
StringBuilder myCookies = new StringBuilder();
// myCookies.append(cookies + ";");
for(int i =1;(headerName= conn.getHeaderFieldKey(i))!=null;i++){
if(headerName.equals("Set-Cookie")){
String cookie = conn.getHeaderField(i);
cookie = cookie.substring(0, cookie.indexOf(";"));
String cookieName = cookie.substring(0, cookie.indexOf("="));
String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());
myCookies.append(cookieName + "=");
myCookies.append(cookieValue + ";");
}
}
URL purl = new URL("http://passport.mop.com/personal");
HttpURLConnection pconn = (HttpURLConnection) purl.openConnection();
pconn.setRequestProperty("Referer", str);
pconn.setRequestProperty("Cookie", myCookies.toString());
pconn.connect();
InputStream inputStream1 = pconn.getInputStream();
// BufferedReader reader1 = new BufferedReader(new InputStreamReader(inputStream1,"utf-8"));
// String line1 = reader1.readLine();
// while(line1 != null){
// System.out.println(line1);
// line1 = reader1.readLine();
// }
// reader1.close();
int chByte = 0;
FileOutputStream fileOut = new FileOutputStream(new File(outPath));
chByte = inputStream1.read();
while(chByte != -1){
fileOut.write(chByte);
chByte = inputStream1.read();
}
}
private static String getCookies(HttpURLConnection conn) {
// TODO Auto-generated method stub
// StringBuffer cookies = new StringBuffer();
StringBuilder cookies = new StringBuilder();
String headName;
for (int i = 1; (headName = conn.getHeaderField(i)) != null; i++) {
StringTokenizer st = new StringTokenizer(headName, "; ");
while (st.hasMoreTokens()) {
cookies.append(st.nextToken() + "; ");
}
}
return cookies.toString();
}
private static void testJsoup() throws IOException{
//解析html文檔
File input = new File("D:/fileDown2.txt");
Document doc = Jsoup.parse(input, "UTF-8");
// for(Element ele : doc.getElementsByClass("zhnc").select("ul")){
// if(!ele.select("li").toString().equals("")){
// String text = ele.select("li").text();
// System.out.println("user_name is:"+text);
// }
// }
Elements ele = doc.getElementsByClass("zhnc").select("ul");
if(!ele.select("li").toString().equals("")){
String text = ele.select("li").text();
System.out.println("user_name is:"+text);
}else{
System.out.println("登錄失敗");
}
}
}
相關文章
springboot多文件上傳實現(xiàn)使用postman測試多文件上傳接口
這篇文章主要介紹了springboot多文件上傳實現(xiàn)使用postman測試多文件上傳接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Java編程實現(xiàn)服務器端支持斷點續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實現(xiàn)服務器端支持斷點續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11使用Spring Data JDBC實現(xiàn)DDD聚合的示例代碼
這篇文章主要介紹了使用Spring Data JDBC實現(xiàn)DDD聚合的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09Java多線程編程之訪問共享對象和數(shù)據(jù)的方法
這篇文章主要介紹了Java多線程編程之訪問共享對象和數(shù)據(jù)的方法,多個線程訪問共享對象和數(shù)據(jù)的方式有兩種情況,本文分別給出代碼實例,需要的朋友可以參考下2015-05-05SpringCloud微服務之Hystrix組件實現(xiàn)服務熔斷的方法
微服務架構特點就是多服務,多數(shù)據(jù)源,支撐系統(tǒng)應用。這樣導致微服務之間存在依賴關系。這篇文章主要介紹了SpringCloud微服務之Hystrix組件實現(xiàn)服務熔斷的方法,需要的朋友可以參考下2019-08-08