http请求格式

HTTP请求体内容笔记

1.主要参考的内容

1.1 详解了http请求报文和http响应报文

https://blog.csdn.net/u010256388/article/details/68491509

1.2 http header 各个参数详解

https://kb.cnblogs.com/page/92320/

2.自己理解部分

2.1 http请求图解

http请求格式_第1张图片

http请求格式_第2张图片

请求报文内容详解

2.2 http 请求 header各个参数补充说明

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

先前网页的地址,当前请求网页紧随其后,即来路

Referer: http://www.zcmhi.com/archives/71.html

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 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 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 requestEntity = new HttpEntity(PostStrUtils.getPostStrFromMap(paramMap),  headers);  
          
        String msg = restTemplate.postForObject(url,requestEntity, String.class);  

需要注意的是,使用第二个方法,仍然需要将参数params转为String类型。

你可能感兴趣的:(http请求格式)