zoukankan      html  css  js  c++  java
  • SpringBoot-RestTemplate实现调用第三方API

    1. RestTemplate的方式来调用别人的API,将数据转化为json 格式,引入了fastjson

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.28</version>
    </dependency>

    2. 编写RestTemlateConfig,配置好相关信息

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.client.ClientHttpRequestFactory;
    import org.springframework.http.client.SimpleClientHttpRequestFactory;
    import org.springframework.web.client.RestTemplate;
     
    @Configuration
    public class RestTemplateConfig {
        @Bean
        public RestTemplate restTemplate(ClientHttpRequestFactory factory){
            return new RestTemplate(factory);
        }
     
        @Bean
        public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
            SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
            factory.setConnectTimeout(15000);
            factory.setReadTimeout(5000);
            return factory;
        }
    }

    3.编写controller,调用第三方的API,浏览器模拟get请求,postman模拟post请求

    import com.alibaba.fastjson.JSONObject;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.*;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
     
    import java.util.Map;
     
    @RestController
    public class SpringRestTemplateController {
        @Autowired
        private RestTemplate restTemplate;
        /***********HTTP GET method*************/
        @GetMapping("/testGetApi")
        public String getJson(){
            String url="http://localhost:8089/o2o/getshopbyid?shopId=19";
            //String json =restTemplate.getForObject(url,Object.class);
            ResponseEntity<String> results = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
            String json = results.getBody();
            return json;
        }
     
        /**********HTTP POST method**************/
        @PostMapping(value = "/testPost")
        public Object postJson(@RequestBody JSONObject param) {
            System.out.println(param.toJSONString());
            param.put("action", "post");
            param.put("username", "tester");
            param.put("pwd", "123456748");
            return param;
        }
     
        @PostMapping(value = "/testPostApi")
        public Object testPost() {
            String url = "http://localhost:8081/girl/testPost";
            JSONObject postData = new JSONObject();
            postData.put("descp", "request for post");
            JSONObject json = restTemplate.postForEntity(url, postData, JSONObject.class).getBody();
            return json;
        }
    }

    4、另一个项目接收json代码

    /**
     * 接收传递的json参数解析*/
    @RequestMapping("/getJson")
    public String getJson(HttpServletRequest request,
            HttpServletResponse response) {
        StringBuffer json = new StringBuffer();
        String line = null;
        try {
            BufferedReader reader = request.getReader();
            while ((line = reader.readLine()) != null) {
                System.out.println("line:" + line);
                json.append(line);
            }
        } catch (Exception e) {
            System.out.println(e.toString());
     
        }
        System.out.println(json.toString());
        return json.toString();
    }

    参考:https://blog.csdn.net/a1032818891/article/details/81172478 

    https://blog.csdn.net/Smilelfq/article/details/99977318

  • 相关阅读:
    Delphi的 Format格式化函数
    Delphi的Trim函数
    Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
    Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
    Delphi容器类之---TList、TObjectList、TComponentList、TClassList
    Delphi的分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同
    Delphi容器类之---TList、TStringList、TObjectList,以及一个例程的代码分析
    Linux C编程学习6---字符串处理、数据转换
    Linux C编程学习之开发工具3---多文件项目管理、Makefile、一个通用的Makefile
    Linux C编程学习之开发工具2---GDB调试器
  • 原文地址:https://www.cnblogs.com/qiantao/p/13402384.html
Copyright © 2011-2022 走看看