SpringBoot appelle l'interface externe

SpringBoot appelle des interfaces externes
1. La première méthode (HttpClient, etc.)
utilise des méthodes de plug-in, telles que le HttpClient intégré, ou OkHttp, ou même le HttpURLConnection natif, etc. Ici, prenons HttpClient comme exemple.

1. Classe d'outils d'encapsulation
Demande d'obtention d'encapsulation simple

    /**
     * 发送get请求:带请求头和请求参数
     *
     * @param url     请求地址
     * @param headers 请求头
     * @param params  请求参数集合
     * @return JSONObject
     * @throws Exception
     */
    public static JSONObject doGet(String url, Map<String, Object> headers, Map<String, Object> params) throws Exception {
    
    
        //创建httpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        URIBuilder uriBuilder = new URIBuilder(url);
        if (params != null) {
    
    
            Set<Map.Entry<String, Object>> entrySet = params.entrySet();
            for (Map.Entry<String, Object> entry : entrySet) {
    
    
                uriBuilder.setParameter(entry.getKey(), String.valueOf(entry.getValue()));
            }
        }
        URI uri = uriBuilder.build();
        HttpGet httpGet = new HttpGet(uri);
        //设置参数
        httpGet.setConfig(RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build());
        //设置请求头
        packageHeader(headers, httpGet);
        CloseableHttpResponse httpResponse = null;
        try {
    
    
            return getResponse(httpResponse, httpClient, httpGet);
        } finally {
    
    
            release(httpResponse, httpClient);
        }
    }

2. Testez

   Map<String,Object> headers=new HashMap<>();
        headers.put("Key","换成你自己的key");
        Map<String,Object> query=new HashMap<>();
        query.put("city","350200");
        JSONObject jsonObject = HttpUtil.doGet("https://restapi.amap.com/v3/weather/weatherInfo", headers, query);
        log.info(JSONUtil.toJsonStr(jsonObject));

3. Vérification des résultats
insérer la description de l'image ici
2. La deuxième méthode (RestTemplate)
RestTemplate peut être utilisée pour la communication entre les microservices et les requêtes réseau.
Il propose une variété de méthodes de soumission, postForEntity, postForObject, postForLocation, etc.
Voici une démo utilisant getForEntity.
L'utilisation de RestTemplate est très flexible et doit être utilisée en fonction de l'utilisation réelle

1. Méthode d'appel

RestTemplate restTemplate = new RestTemplate();
        //创建请求头
        HttpHeaders httpHeaders = new HttpHeaders();
        //参数
        Map<String, Object> query = new HashMap<>();
        query.put("city", "350200");
        query.put("Key", "换成你自己的key");
        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(httpHeaders);
        String url = "https://restapi.amap.com/v3/weather/weatherInfo?city={city}&Key={Key}";
        //请求地址、请求体以及返回参数类型
        ResponseEntity<JSONObject> responseEntity = restTemplate.getForEntity(url, JSONObject.class, query);
        log.info(JSONUtil.toJsonStr(responseEntity));

insérer la description de l'image ici
3. La troisième voie (Feign)
introduit des dépendances

<!-- spring-cloud-starter-openfeign -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>4.0.0</version>
</dependency>

Feign est utilisé pour la consommation entre microservices et peut également être utilisé pour les requêtes réseau.

L'URL ici doit être placée dans le fichier de configuration et elle est directement écrite à mort pour plus de commodité.
Notez que le nom dans FeignClient doit être configuré sinon une erreur sera signalée dans la classe de test

1. Interface d'appel

/**
 * @author xysusj
 */
@FeignClient(url = "https://restapi.amap.com/v3/weather/weatherInfo",name = "weatherApi")
public interface WeatherApi {
    
    

    /**
     * 获取天气详情
     *
     * @param key
     * @param city
     * @return
     */
    @GetMapping(value = "")
    JSONObject getWeather(@RequestParam("Key") String key, @RequestParam("city") String city);
}

insérer la description de l'image ici

Acho que você gosta

Origin blog.csdn.net/weixin_45817985/article/details/132443919
Recomendado
Clasificación