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();
}
作者:QianTM
来源链接:
https://www.cnblogs.com/qiantao/p/13402384.html