SpringBootが外部インターフェースを呼び出す

SpringBoot は外部インターフェイス
1 を呼び出します。最初のメソッド (HttpClient など) は、
組み込みの HttpClient、OkHttp、さらにはネイティブの HttpURLConnection などのプラグイン メソッドを使用します。ここでは、HttpClient を例に挙げます。

1. カプセル化ツールクラス
簡易カプセル化取得リクエスト

    /**
     * 发送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. テスト

   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. 結果の検証
ここに画像の説明を挿入
2. 2 番目のメソッド (RestTemplate)
RestTemplate は、マイクロサービスとネットワーク リクエスト間の通信に使用できます。
postForEntity、postForObject、postForLocation など、さまざまな送信メソッドがあります。
getForEntity を使用したデモを次に示します。
RestTemplate の使用は非常に柔軟であり、実際の用途に応じて使用する必要があります

1.呼び出し方法

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));

ここに画像の説明を挿入
3. 3 番目の方法 (Feign) では
依存関係を導入します

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

Feign は、マイクロサービス間の消費に使用され、ネットワーク リクエストにも使用できます。

ここの URL は設定ファイルに配置する必要があり、便宜上直接書き込まれます。
FeignClient 内の名前を構成する必要があることに注意してください。構成しないと、テスト クラスでエラーが報告されます。

1.通話インターフェース

/**
 * @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);
}

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_45817985/article/details/132443919