一、
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* @Title: HttpUtils
* @Description
* @date 2020/4/24 10:15
*/
public class HttpUtils {
public static String postInvocation(String url, MultiValueMap<String, Object> param) {
RestTemplate restTemplate = new RestTemplate();
//设置Http Header
HttpHeaders headers = new HttpHeaders();
//设置请求媒体数据类型
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
//设置返回媒体数据类型
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);
return restTemplate.postForObject(url, httpEntity,String.class);
}
public static void main(String[] args){
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.add("data","{\"user_token\":\"\",\"input\":{\"user_name\":\"900001\",\"user_pwd\":\"1\"}}");
param.add("format","json");
param.add("timestamp","2020-08-31 20:48:59");
param.add("sign","41114ECF6CA53392E958AE334D4CCACB");
param.add("version","1.0");
param.add("syskey","test");
System.out.println(postInvocation("http://219.133.104.193:8001/openapi/login",param));
}
}
import cn.hutool.core.util.StrUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
@Component
public class HttpClient {
private static final Logger logger = LoggerFactory.getLogger(HttpClient.class);
@Autowired
private RestTemplate restTemplate;
public String httpRequest(String url, Object requestParams, HttpMethod method, String token) throws Exception{
return _httpRequest(url,requestParams,method,token,String.class, 2000, 2000);
}
public <T> T httpRequest(String url, Object requestParams, HttpMethod method, String token, Class<T> cla, int connectTimeout, int readTimeout) throws Exception{
return _httpRequest(url, requestParams, method, token, cla, connectTimeout, readTimeout);
}
public <T> T httpRequest(String url, Object requestParams, HttpMethod method, String token, Class<T> cla) throws Exception{
return _httpRequest(url, requestParams, method, token, cla, 2000, 2000);
}
private <T> T _httpRequest(String url, Object requestParams, HttpMethod method, String token,
Class<T> cla, int connectTimeout, int readTimeout) throws Exception{
//设置超时时间
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(connectTimeout);
requestFactory.setReadTimeout(readTimeout);
restTemplate.setRequestFactory(requestFactory);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
if(StrUtil.isNotEmpty(token)) {
headers.add("token", token);
}
//将请求头部和参数合成一个请求
HttpEntity<MultiValueMap<Object, Object>> requestEntity = new HttpEntity(requestParams, headers);
ResponseEntity<T> response = restTemplate.exchange(url, method, requestEntity, cla);
return response.getBody();
}
}
RestTemplate 咱们再配置注入一下
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package *.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@Component
public class RestTemplateConfigs {
private static final Logger logger = LoggerFactory.getLogger(RestTemplateConfigs.class);
public RestTemplateConfigs() {
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
int connectTimeOutInSecond = 15000;
int readTimeOutInSecond = 15000;
logger.info(String.format("connect timeout:%d, read timeout%d", Integer.valueOf(connectTimeOutInSecond), Integer.valueOf(readTimeOutInSecond)));
return builder.setConnectTimeout(connectTimeOutInSecond).setReadTimeout(readTimeOutInSecond).build();
}
}
这个是别人的
https://blog.csdn.net/wxr15732623310/article/details/78234941
public static String sendGet(String url, Map<String, String> parameters) {
String result="";
BufferedReader in = null;// 读取响应输入流
StringBuffer sb = new StringBuffer();// 存储参数
String params = "";// 编码之后的参数
try {
// 编码请求参数
if(parameters.size()==1){
for(String name:parameters.keySet()){
sb.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),
"UTF-8"));
}
params=sb.toString();
}else{
for (String name : parameters.keySet()) {
sb.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),
"UTF-8")).append("&");
}
String temp_params = sb.toString();
params = temp_params.substring(0, temp_params.length() - 1);
}
String full_url = url + "?" + params;
System.out.println(full_url);
// 创建URL对象
java.net.URL connURL = new java.net.URL(full_url);
// 打开URL连接
java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
.openConnection();
// 设置通用属性
httpConn.setRequestProperty("Accept", "*/*");
httpConn.setRequestProperty("Connection", "Keep-Alive");
httpConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
// 建立实际的连接
httpConn.connect();
// 响应头部获取
Map<String, List<String>> headers = httpConn.getHeaderFields();
// 遍历所有的响应头字段
for (String key : headers.keySet()) {
System.out.println(key + "\t:\t" + headers.get(key));
}
// 定义BufferedReader输入流来读取URL的响应,并设置编码方式
in = new BufferedReader(new InputStreamReader(httpConn
.getInputStream(), "UTF-8"));
String line;
// 读取返回的内容
while ((line = in.readLine()) != null) {
result +=line;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result ;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @param isproxy
* 是否使用代理模式
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param,boolean isproxy) {
OutputStreamWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
HttpURLConnection conn = null;
if(isproxy){//使用代理模式
@SuppressWarnings("static-access")
Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));
conn = (HttpURLConnection) realUrl.openConnection(proxy);
}else{
conn = (HttpURLConnection) realUrl.openConnection();
}
// 打开和URL之间的连接
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST"); // POST方法
// 设置通用的请求属性
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("Content-Type", "application/x-www-form-urlencoded");
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
// 发送请求参数
out.write(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;
}