• 用java程序模拟网站的登录以及文件批量上传


    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import org.apache.http.entity.mime.content.FileBody;
    import org.apache.http.HttpEntity;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.cookie.Cookie;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.mime.HttpMultipartMode;
    import org.apache.http.entity.mime.MultipartEntityBuilder;
    import org.apache.http.impl.client.BasicCookieStore;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    
    public class FileUpload {
    
    	public static void main(String[] args) throws Exception {
    		FileUpload fileupload=new FileUpload();
    		String LoginUrl = "";// 登录地址,get请求,所以这里面带了账号和密码
    		String UploadUrl = "";// 上传文件地址
    		String FileUrl ="";// 所要上传的文件夹
    
    		fileupload.GetCookies(LoginUrl);
    		fileupload.UploadFile(UploadUrl, FileUrl);
    
    	}
    
    	private static BasicCookieStore cookieStore = new BasicCookieStore();
    	private static CloseableHttpClient httpClient = HttpClients.custom()
    			.setDefaultCookieStore(cookieStore).build();
    
    	// 登录请求Get,得到cookie。如果是post请求,把账号和密码配置成表单参数,
    	public  void GetCookies(String urlstr) throws Exception {
    		HttpGet httpget = new HttpGet(urlstr);
    		 httpClient.execute(httpget);
    		
    	}
    
    	//文件上传请求,POST 
    	public  void UploadFile(String Url, String sqlitPath)
    			throws IOException {
    		try {
    			HttpPost httpPost = new HttpPost(Url);
    			File root = new File(sqlitPath);
    			File[] files = root.listFiles();
    			for (File file : files) {
    				String FilePath = file.getAbsolutePath();
    				HttpEntity reqEntity = makeMultipartEntity(FilePath);
    				httpPost.setEntity((org.apache.http.HttpEntity) reqEntity);
    				httpClient.execute(httpPost);
    			}
    		} finally {
    			httpClient.close();
    		}
    
    	}
    
    	// 配置文件上传参数
    	public  HttpEntity makeMultipartEntity(String sqlitPath) {
    		MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    		builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    
    		NameValuePair pair1 = new BasicNameValuePair("", "");
    		NameValuePair pair2 = new BasicNameValuePair("", "");
    		ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
    		pairs.add(pair1);
    		pairs.add(pair2);
    		
    		if (pairs != null && pairs.size() > 0) {
    			for (NameValuePair p : pairs) {
    				builder.addTextBody(p.getName(), p.getValue(),
    						ContentType.TEXT_PLAIN.withCharset("UTF-8"));
    			}
    		}
    		FileBody bin = new FileBody(new File(sqlitPath));
    		builder.addPart("upload", bin);
    		return builder.build();
    	}
    }
    
  • 相关阅读:
    UI5 Databind
    the meaning of myconputer environment path
    Linux查看日志常用命令
    fw: IP bonding in Linux.
    FW:expect tcl install
    install ET underlinux
    转expect 文一篇。
    linux 集萃
    try expect and autoexpect
    linux 压缩种类
  • 原文地址:https://www.cnblogs.com/mcahkf/p/4760290.html
Copyright © 2020-2023  润新知