1.创建项目
使用idea创建maven项目
2.post,get请求方法
代码:
package com.mmall;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class HttpRequestGetAndPost {
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, JSONObject param,String cookie,String authorization) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 自定义
conn.setRequestProperty("cookie",cookie);
conn.setRequestProperty("content-type","application/json;charset=UTF-8");
conn.setRequestProperty("authorization",authorization);
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
public static void main(String[] args) {
String loginUrl = "";
String queryUrl = "";
// "HY062u01,HY063u01" "2021-08-03 00:00:00" "2021-08-05 23:00:00"
String[] args1 = {"HY062u01,HY063u01","2021-08-03 00:00:00","2021-08-05 23:00:00"};
if(args1.length !=3){
System.out.println("参数不对!");
}
String[] accounts = args1[0].split(",");
String start = args1[1];
String end = args1[2];
for(String account : accounts){
// 登录获取session
String jsessionid = "JSESSIONID=30F3E0BECAF05B090B23B8640BAC3837";
JSONObject param = new JSONObject();
param.put("username",account);
param.put("password","mrGOTtFXyAd9fUuI1wX9tQ==");
param.put("vertifyCode","");
param.put("uuid","1c4e045cc4004b38bdda5e54cde0fb39");
param.put("ysetduiustted",0);
String result = sendPost(loginUrl,param,jsessionid,"");
JSONObject jsonObject = JSONObject.parseObject(result);
if(jsonObject.getIntValue("code") == 1000){
String token = jsonObject.getJSONObject("data").getString("token");
String cookie = jsessionid + "; harbour_process_monitor_token=" + token;
// 第一次请求,获取总条数
JSONObject param1 = new JSONObject();
param1.put("paperNum","");
param1.put("startTime",start);
param1.put("endTime",end);
param1.put("page",1);
param1.put("size",10);
param1.put("samplingPointCode",account.substring(0,5));
String result1 = sendPost(queryUrl,param1,cookie,token);
JSONObject jsonObject1 = JSONObject.parseObject(result1);
if(jsonObject1.getIntValue("code") == 1000){
String count = jsonObject1.getJSONObject("data").getString("total");
// 第二次请求,查询
param1.put("size",count);
String result2 = sendPost(queryUrl,param1,cookie,token);
JSONObject jsonObject2 = JSONObject.parseObject(result2);
JSONArray jsonArray = jsonObject2.getJSONObject("data").getJSONArray("list");
for(Object t : jsonArray){
JSONObject tt = (JSONObject) t;
System.out.print(tt.getString("name")+" ");
System.out.print(tt.getString("paperNum")+" ");
System.out.print(tt.getString("phoneNum")+" ");
System.out.println();
}
}else{
System.out.println(jsonObject1.getString("msg"));
}
}else{
System.out.println(jsonObject.getString("msg"));
}
}
}
}
注意:请求头中的cookie,authorization这些需不需要配置得看具体请求
3.写excel
可以在一个excel里面创建多个sheet
代码:
package com.yantai.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExcelUtil {
private static int sheetIndex = 0;
private static final String filename = "./"+(new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_").format(new Date()))+"身份证信息.xls";
/**
* 如果创建多个sheet,只能用相同的workbook
*/
private static HSSFWorkbook workbook = new HSSFWorkbook();
/**
* POI 创建Excel文件
* @author yangtingting
* @date 2019/07/29
*/
public static void writeExcel(JSONArray jsonArray,String sheetName) {
//创建工作表sheeet
HSSFSheet sheet=workbook.createSheet();
workbook.setSheetName(sheetIndex,sheetName);
//创建第一行标题
HSSFRow row=sheet.createRow(0);
String[] title={"姓名","身份证","号码"};
HSSFCell cell=null;
for (int i=0;i<title.length;i++){
cell=row.createCell(i);
cell.setCellValue(title[i]);
}
//追加数据(从第二行开始写)
for (int i=0;i<jsonArray.size();i++){
JSONObject tt = (JSONObject) jsonArray.get(i);
String name = tt.getString("name")+"";
String paperNum = tt.getString("paperNum")+"";
String phoneNum = tt.getString("phoneNum")+"";
HSSFRow nextrow=sheet.createRow(i+1);
HSSFCell cell2=nextrow.createCell(0);
cell2.setCellValue(name);
cell2=nextrow.createCell(1);
cell2.setCellValue(paperNum);
cell2=nextrow.createCell(2);
cell2.setCellValue(phoneNum);
}
//创建一个文件
File file=null;
FileOutputStream stream = null;
try{
file = new File(filename);
if(file == null){
// 不存在文件就创建
file.createNewFile();
}
stream = FileUtils.openOutputStream(file);
workbook.write(stream);
}catch (Exception e){
e.printStackTrace();
}finally {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
sheetIndex++;
}
}
生成的文件的路径,例如./aaa.xls,最后就是会个jar包在同一个路径

4.打jar包
得使用一个maven plugin,否则生成的jar包不能通过java -jar直接运行,会报错,而且不会把使用的到的jar包一起打包,使用这个插件之后,jar包里面会生成几个文件,也会将使用的jar包一起打包

打包好的jar包里面,生成的META-INF文件夹,里面主要的文件是指定启动类的文件

5.运行
启动脚本:
java -Dfile.encoding=utf-8 -jar hsjc-1.0-SNAPSHOT-jar-with-dependencies.jar 参数1 参数2 参数3
- 开始没有添加-Dfile.encoding=utf-8,导致post请求返回的结果是乱码,但是在idea中使用post请求不是乱码,加上了就好了
- 参数是字符串的形式,以逗号隔开,java里面就是用main方法的String[] args 来接收,参数1就是args[0],参数2就是args[1]

1036

被折叠的 条评论
为什么被折叠?



