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