本文以请求第三方接口:QQ测凶吉为例
json生成实体类工具
以下这个网址(https://www.bejson.com/json2javapojo/new/),可以直接生成实体类。
搭建spring boot 框架
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>javatest</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 前端显示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.3.7.RELEASE</version>
</dependency>
</dependencies>
</project>
- controller层
api请求去https://dashboard.juhe.cn/home申请。
package testApi.qqController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import testApi.qqEntity.JsonRootBean;
import testApi.qqService.QqService;
@RestController
@RequestMapping("/qq")
public class Controller {
@Autowired
private QqService qqService;
@GetMapping("/testHiongkied/{QqId}")
public JsonRootBean testHiongkied (@PathVariable("QqId") String qqId){
System.out.println("开始调用第方法接口");
return qqService.testHiongkied(qqId);
}
}
- service层
package testApi.qqService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import testApi.qqEntity.JsonRootBean;
@Service
public class QqService {
@Autowired
private RestTemplate restTemplate;
/*//设置请求头,或其他需要需要的
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Content-Type", "application/json; charset=UTF-8");*/
public JsonRootBean testHiongkied( String QqId) {
String url ="http://japi.juhe.cn/qqevaluate/qq?key=1332c27a471f3c125865****9c68eda1&qq=";
//这里填正确的url,网址在前面给出
url = url + QqId;
//方式一
ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
String body = exchange.getBody();
//方式二
/*ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
String body = forEntity.getBody();*/
ObjectMapper objectMapper = new ObjectMapper();//实体类映射转换
JsonRootBean jsonRootBean = null;
try {
jsonRootBean = objectMapper.readValue(body, JsonRootBean.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return jsonRootBean;
}
}
- config 配置类
有三种方法,亲测有效
package testApi.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTempConfig {
//方法一
@Bean(name = "restTemplate")
public RestTemplate restTemplate() {
return new RestTemplate(new HttpComponentsClientHttpRequestFactory());
}
//方法二
/* @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;
}*/
//方法三
/* @Autowired
private RestTemplateBuilder restTemplateBuilder;
@Bean
public RestTemplate restTemplate(){
return restTemplateBuilder.build();
}*/
}
- 程序入口
package testApi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class qqApplication {
public static void main(String[] args) {
SpringApplication.run(qqApplication.class);
}
}
运行截图
- 请求截图(id为QQ号码)
- 调用自己写的程序截图
结语
有了这个之后我们就可以整合第三方数据啦!!我们也可以整合前端,做出想要的页面出来了。