业务背景: 之前接触到一个运维的工作,该页面只有单条新增的功能,并且系统提供商不维护了,不提供批量新增的功能,我们也没有该系统源码,但是新增量剧增,只好采取循环调用单条新增按钮逻辑 ,首先把需要新增的数据整理到excel或者数据库表中 然后进行循环调用。
package com.example.boot.java.test.util;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import java.io.UnsupportedEncodingException;
public class HttpTemplate {
public static void main(String[] args) {
restTemplateVisit();
}
/**
* RestTemplate 客户端访问
*/
private static void restTemplateVisit() {
//根据自己业务需要请求的地址
String mUrl = "接口地址";
String returnXml = ""; // 核心返回结果报文字符串
try {
//复杂构造函数的使用
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(1000);// 设置超时
requestFactory.setReadTimeout(1000);
//利用复杂构造器可以实现超时设置,内部实际实现为 HttpClient
RestTemplate restTemplate = new RestTemplate(requestFactory);
//设置HTTP请求头信息,实现编码等
HttpHeaders requestHeaders = new HttpHeaders();
// requestHeaders.set("Accept", "text/");
requestHeaders.set("Accept-Charset", "utf-8");
requestHeaders.set("Content-type", "application/json; charset=utf-8");// 设置编码
// cookie 中的 登录临牌 需要登入你访问的系统后 F12 看Cookies中 获得 目的就是模仿登录后的状态 requestHeaders.set("Cookie","Cookie值");
requestHeaders.set("Connection", "keep-alive");
//利用容器实现数据封装,发送
//需要新增的参数 我这里写死的 你可以根据自己的实际情况读表或者读excel
String str = "{\n" +
" \"list\": [\n" +
" {\n" +
" \n" +
" \"earningsRatio\": 0.28,\n" +
" \n" +
" \"id\": 11\n" +
" \n" +
" }\n" +
" ],\n" +
" \"teamType\": \"praised\",\n" +
" \"type\": \"team\"\n" +
"}";
SettleProfitQueryRequest mRequestXml = new SettleProfitQueryRequest();
mRequestXml.setType("team");
// JSONObject jsonObject1 = JSONObject.parseObject(String.valueOf(mRequestXml));
HttpEntity<String> entity = new HttpEntity<String>(str, requestHeaders);
//调用 可以根据实际情况 循环调用
returnXml = restTemplate.postForObject(mUrl, entity, String.class);
// 转码原因:RestTemplate默认是使用org.springframework.http.converter.StringHttpMessageConverter来解析
// StringHttpMessageConverter 默认用的 ISO-8859-1来编码的
returnXml = new String(returnXml.getBytes("ISO-8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("restTemplate客户端访问返回: \n" + returnXml);
}
}