package com.vci.ubcs.example.util;
|
|
import org.springframework.http.*;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
import org.springframework.web.client.RestTemplate;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* @author ludc
|
* @date 2024/2/27 20:18
|
*/
|
public class HttpUtils {
|
|
//Content-Type的key
|
public static String CONTENT_TYPE = "Content-Type";
|
//json数据
|
public static String CONTENT_TYPE_JSON = MediaType.APPLICATION_JSON_VALUE;
|
public static String CONTENT_TYPE_JSON_UTF8 = MediaType.APPLICATION_JSON_UTF8_VALUE;
|
|
//表单格式,默认
|
public static String CONTENT_TYPE_TEXT = MediaType.APPLICATION_FORM_URLENCODED_VALUE;
|
|
/**
|
* get请求
|
*
|
* @param url
|
* @return
|
*/
|
public static String get(String url) {
|
return get(url, null);
|
}
|
|
/**
|
* get请求
|
*
|
* @param url
|
* @param headers 请求头
|
* @return
|
*/
|
public static String get(String url, MultiValueMap<String, String> headers) {
|
return request(url, null, headers, HttpMethod.GET);
|
}
|
|
/**
|
* post请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @return
|
*/
|
public static String post(String url, MultiValueMap<String, String> params) {
|
return post(url, params, null);
|
}
|
|
/**
|
* post请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @param headers 请求头
|
* @return
|
*/
|
public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
|
return request(url, params, headers, HttpMethod.POST);
|
}
|
|
/**
|
* post请求 TODO: 2024-02-25改,为了满足根据Content-type的类型来发请求,并且param中的json是最后的时候发送请求再转
|
*
|
* @param url
|
* @param params 请求参数
|
* @param headers 请求头
|
* @return
|
*/
|
public static String postByMediaType(String url, MultiValueMap<String, Object> params, MultiValueMap<String, String> headers,MediaType mediaType) {
|
return request(url, params, headers, HttpMethod.POST,mediaType);
|
}
|
|
/**
|
* put请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @return
|
*/
|
public static String put(String url, MultiValueMap<String, String> params) {
|
return put(url, params, null);
|
}
|
|
/**
|
* put请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @param headers 请求头
|
* @return
|
*/
|
public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
|
return request(url, params, headers, HttpMethod.PUT);
|
}
|
|
/**
|
* delete请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @return
|
*/
|
public static String delete(String url, MultiValueMap<String, String> params) {
|
return delete(url, params, null);
|
}
|
|
/**
|
* delete请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @param headers 请求头
|
* @return
|
*/
|
public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
|
return request(url, params, headers, HttpMethod.DELETE);
|
}
|
|
/**
|
* 表单请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @param headers 请求头
|
* @param method 请求方式
|
* @return
|
*/
|
public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {
|
if (params == null) {
|
params = new LinkedMultiValueMap<>();
|
}
|
return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);
|
}
|
|
/**
|
* http请求
|
*
|
* @param url
|
* @param params 请求参数
|
* @param headers 请求头
|
* @param method 请求方式
|
* @param mediaType 参数类型
|
* @return
|
*/
|
public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {
|
if (url == null || url.trim().isEmpty()) {
|
return null;
|
}
|
RestTemplate client = new RestTemplate();
|
// header
|
HttpHeaders httpHeaders = new HttpHeaders();
|
if (headers != null) {
|
httpHeaders.addAll(headers);
|
}
|
// 提交方式:表单、json
|
httpHeaders.setContentType(mediaType);
|
HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);
|
ResponseEntity<String> response = client.exchange(url, method, httpEntity, String.class);
|
return response.getBody();
|
}
|
|
public static MultiValueMap<String, String> set_params_headers(String key,String value,MultiValueMap<String, String> map){
|
if(map==null){
|
map = new LinkedMultiValueMap<>();
|
}
|
map.add(key,value);
|
return map;
|
}
|
/**
|
* 获取ip
|
* @param request
|
* @return
|
*/
|
public static String getIpAddressFromRequest(HttpServletRequest request){
|
String ip = request.getHeader("X-Forwarded-For");
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getHeader("Proxy-Client-IP");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getHeader("WL-Proxy-Client-IP");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getHeader("HTTP_CLIENT_IP");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getRemoteAddr();
|
}
|
if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
|
//0:0:0:0:0:0:0:1是本机在访问
|
ip = "127.0.0.1";
|
}
|
return ip;
|
}
|
}
|