https://blog.csdn.net/u010256388/article/details/68491509
https://kb.cnblogs.com/page/92320/
请求报文内容详解
|
Header |
解释 |
示例 |
|
Accept |
指定客户端能够接收的内容类型 |
Accept: text/plain, text/html |
|
Accept-Charset |
浏览器可以接受的字符编码集。 |
Accept-Charset: iso-8859-5 |
|
Accept-Encoding |
指定浏览器可以支持的web服务器返回内容压缩编码类型。 |
Accept-Encoding: compress, gzip |
|
Cookie |
HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 |
Cookie: $Version=1; Skin=new; |
|
onnection |
表示是否需要持久连接。(HTTP 1.1默认进行持久连接) |
Connection: close |
|
Accept-Language |
浏览器可接受的语言 |
Accept-Language: en,zh |
|
Referer |
先前网页的地址,当前请求网页紧随其后,即来路 |
|
|
Host |
指定请求的服务器的域名和端口号 |
Host: www.zcmhi.com |
|
From |
发出请求的用户的Email |
From: [email protected] |
3.RestTemplate中文乱码问题解决
第一种方法是通过将value的值强转为utf-8格式
/**
* 发送http post请求,并将结果返回
*
* @param url
* @param params
* @return
*/
public JSONObject post(String url, Map<String, Object> params) {
if (params == null) {
params = Maps.newHashMap();
}
String body = params.entrySet().stream()
.map(entry ->
{
try {
String value = entry.getValue() instanceof String ? (String) entry.getValue() : JSONObject.toJSONString(entry.getValue());
return entry.getKey() + "=" + URLEncoder.encode(value, "utf-8");
} catch (UnsupportedEncodingException e) {
logger.error("encode error", e);//never happen
}
return "";
}
)
.collect(Collectors.joining("&"));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
//将请求内容封装
HttpEntity<String> entity = new HttpEntity<>(body, headers);
//投递参数
String result = restTemplate.postForObject(url, entity, String.class);
logger.info("[url={}][param={}][result={}]", url, JSONObject.toJSONString(params), result);
return JSON.parseObject(result);
}
第二种方法是通过设置http请求头
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8");
headers.setContentType(type);
System.out.println(type);
HttpEntity<String> requestEntity = new HttpEntity<String>(PostStrUtils.getPostStrFromMap(paramMap), headers);
String msg = restTemplate.postForObject(url,requestEntity, String.class);
需要注意的是,使用第二个方法,仍然需要将参数params转为String类型。