RestTemplate 使用,多种示例

一、基础知识:

       1.Session: 我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。

Session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端。

        2.cookie: 是浏览器保存在用户电脑上的一小段文本,通俗的来讲就是当一个用户通过 http访问到服务器时,由服务器端生成,发送给User-Agent(一般是浏览器),服务器会将一些 Key/Value键值对返回给客户端浏览器(存储在客户端)。

        3.Headers: 包括请求头和响应头,请求头:它是 HTTP 头的一种,它可在 HTTP 请求中使用,并且和请求主体无关。某些请求头如 Accept、Accept-、 If-允许执行条件请求。某些请求头如:Cookie, User-Agent 和 Referer 描述了请求本身以确保服务端能返回正确的响应。
响应头:与请求头类似,不过是接口返回数据的时候,由服务器设置的,比如里面会带上,服务器想要设置的一些cookie信息。然后交由服务器写入到客户端。

        4. Token: 是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token可以设置在cookie或者headers中,都可以。

        5. 公参:顾名思义就是公共参数,一般会放在headers中,让所有请求都带上这个参数,服务器会对他做一些处理。比较常用的比如:会在headers中设置app的版本,用于服务器进行接口的版本兼容。

二、示例

2.1 无需传参,


        RestTemplate restTemplate = new RestTemplate();
        ResponseBean responseBean = restTemplate.postForObject(url, JSONObject.class);

2.2 需要传递cooke

RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        List<String> cookies = new ArrayList<>();
        cookies.add("access_token=eyJraWQiOiJmN2E5ODM1ZS1jNjQ4LTRlMDItYWMwYi0wZGZhOTc3YzJmZWUiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxODAyMTUxMTI1OCIsInVzZXJfbmFtZSI6IjE4MDIxNTExMjU4IiwiaXNzIjoiaHR0cDpcL1wvMTAuOC4wLjM6MzM2ODgiLCJzeXMiOmZhbHNlLCJjbGllbnRfaWQiOiJ3ZWJfYXBwIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiJdLCJhdWQiOiJ3ZWJfYXBwIiwibmJmIjoxNjk4NjI5MTYyLCJ1c2VyX2luZm8iOnsibmFtZSI6IuaWh-eDvSIsInRlbCI6IjE4MDIxNTExMjU4IiwibG9naW4iOiIyYWU5ZGVlMDg1OWE0ZjU5YTNiZDdlMjc5YjZlZjIyYSJ9LCJzY29wZSI6WyJvcGVuaWQiXSwiZXhwIjoxNjk4NzE1NTYyLCJpYXQiOjE2OTg2MjkxNjIsImp0aSI6ImE2NDcyYWI2LTlhZGMtNDEwZi05MmE2LThhNDJiZDRlZDc5NSJ9.gAdHmWQfEijS-UkjNRLEBSf_Y3NfremRBw165np5qQBr4jIxBUad4EJzDa2NgeeFbnZrPjtmu3MFWYCE134uRuHVaxL9IH3xnSpNBxMuJFPhMELmvJI2yiiIVvkbhsG8AKp9Z-F0cmnD34qNodA7NWql4FYHkJBacDM0DX01YjBUfxo1aMBw5BSz7GEHY_PtAEGTecY_iV7FPTaz9WuEcu39V9BuzZXD966tjo5QWbM02a7Fxa-R7kfi_SOHtvCrkoTNemNrHlo3XLY0QVrggTGzhGLL12mDt8vVtD-zDuE02i9Ah7NgM1J_C-gfhIm8ehCogqs9O8e-6hvo70fC2Q" );
        cookies.add("refresh_token=eyJraWQiOiJmN2E5ODM1ZS1jNjQ4LTRlMDItYWMwYi0wZGZhOTc3YzJmZWUiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxODAyMTUxMTI1OCIsInVzZXJfbmFtZSI6IjE4MDIxNTExMjU4IiwiaXNzIjoiaHR0cDpcL1wvMTAuOC4wLjM6MzM2ODgiLCJzeXMiOmZhbHNlLCJjbGllbnRfaWQiOiJ3ZWJfYXBwIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiJdLCJhdWQiOiJ3ZWJfYXBwIiwibmJmIjoxNjk4NjI5MTYyLCJ1c2VyX2luZm8iOnsibmFtZSI6IuaWh-eDvSIsInRlbCI6IjE4MDIxNTExMjU4IiwibG9naW4iOiIyYWU5ZGVlMDg1OWE0ZjU5YTNiZDdlMjc5YjZlZjIyYSJ9LCJzY29wZSI6WyJvcGVuaWQiXSwiZXhwIjoxNjk4NzE1NTYyLCJpYXQiOjE2OTg2MjkxNjIsImp0aSI6ImE2NDcyYWI2LTlhZGMtNDEwZi05MmE2LThhNDJiZDRlZDc5NSJ9.gAdHmWQfEijS-UkjNRLEBSf_Y3NfremRBw165np5qQBr4jIxBUad4EJzDa2NgeeFbnZrPjtmu3MFWYCE134uRuHVaxL9IH3xnSpNBxMuJFPhMELmvJI2yiiIVvkbhsG8AKp9Z-F0cmnD34qNodA7NWql4FYHkJBacDM0DX01YjBUfxo1aMBw5BSz7GEHY_PtAEGTecY_iV7FPTaz9WuEcu39V9BuzZXD966tjo5QWbM02a7Fxa-R7kfi_SOHtvCrkoTNemNrHlo3XLY0QVrggTGzhGLL12mDt8vVtD-zDuE02i9Ah7NgM1J_C-gfhIm8ehCogqs9O8e-6hvo70fC2Q") ;
        cookies.add("session_token=undefined");
        cookies.add("expireCookie=undefined");
        cookies.add("tenant={%22id%22:1381%2C%22name%22:%22%E6%96%87%E7%83%BD%22%2C%22latitude%22:107.73%2C%22longitude%22:29.87%2C%22code%22:%22chqfengdu%22%2C%22scaleLevel%22:13%2C%22imageUrl%22:null%2C%22fullName%22:%22%E9%87%8D%E5%BA%86%E4%B8%B0%E9%83%BD%22%2C%22shortName%22:null%2C%22orgId%22:212%2C%22orgName%22:%22%E5%8D%8E%E4%B8%9C%E9%99%A2%22%2C%22tel%22:%2218021511258%22}");
        headers.put(HttpHeaders.COOKIE, cookies);
        HttpEntity<String> requestEntity = new HttpEntity<>(headers);
        return restTemplate.exchange("https://swt.akenc.com/api/hdyfd/api/psPumpstation/list", HttpMethod.GET,requestEntity,JSONObject.class).getBody();

2.3 传递参数

// 把参数放在Map中
        ResponseEntity<String> entity = template.getForEntity("http://localhost:8081/get/?productId={productId}&name={name}&price={price}", String.class, new HashMap<String, Object>() {
            {
                put("productId", 99);
                put("name", "百事可乐");
                put("price", 45.55);
            }
        });

3 post请求

//方式1  提交的表单参数
        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
        params.add("productId", 123);
        params.add("name", "王中王");
        params.add("price", 45.33);
        ResponseEntity<String> post = postTem.postForEntity("http://localhost:8081/post", params, String.class);
        System.out.println(post);

3.2

// json入参
    public static void postBody() {
        RestTemplate template = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_PROBLEM_JSON);
        JSONObject params = new JSONObject();
        params.append("productId", 99);
        params.append("name", "腊肠");
        params.append("price", 45.33);
        HttpEntity<String> entity = new HttpEntity<>(params.toJSONString(5), headers);
        ResponseEntity<String> forEntity = template.postForEntity("http://localhost:8081/post", entity, String.class);
        System.out.println(forEntity);

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值