12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package com.example.unusualsounds.common.utils;
- import static com.baidubce.auth.SignOptions.DEFAULT;
- import com.baidubce.auth.BceCredentials;
- import com.baidubce.auth.BceV1Signer;
- import com.baidubce.auth.DefaultBceCredentials;
- import com.baidubce.http.HttpMethodName;
- import com.baidubce.internal.InternalRequest;
- import com.baidubce.util.JsonUtils;
- import org.springframework.http.HttpEntity;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpMethod;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.client.RestTemplate;
- import java.net.URI;
- import java.util.HashSet;
- import java.util.Map;
- import java.util.Set;
- public final class BaiDuUtils {
- /**
- * 发送请求
- *
- * @param uriStr uri路径
- * @param httpMethodName 请求方式
- * @param requestBody 请求体
- * @param requestParams 请求参数
- * @param t 响应体类型
- * @param <T> 响应
- * @return
- */
- public static <T> ResponseEntity<T> sendRequest(String uriStr, HttpMethodName httpMethodName, Object requestBody,
- Map<String, String> requestParams, Class<T> t, String ak, String sk,String endpoint, String uriPathPrefix) {
- String signUrl = String.format("%s%s", endpoint, uriStr);
- URI uri = URI.create(signUrl);
- InternalRequest request = new InternalRequest(httpMethodName, uri);
- // 构建请求 url
- String url = String.format("%s%s%s", endpoint, uriPathPrefix, uriStr);
- // 构建查询参数
- if (requestParams != null && !requestParams.isEmpty()) {
- url = url.concat("?");
- for (Map.Entry<String, String> entry : requestParams.entrySet()) {
- request.addParameter(entry.getKey(), entry.getValue());
- url = url.concat(entry.getKey()).concat("=").concat(entry.getValue()).concat("&");
- }
- url = url.substring(0, url.length() - 1);
- }
- // 构建签名
- BceCredentials credentials = new DefaultBceCredentials(ak, sk);
- BceV1Signer bce = new BceV1Signer();
- Set<String> setString = new HashSet<>();
- setString.add("Host");
- DEFAULT.setHeadersToSign(setString);
- bce.sign(request, credentials, DEFAULT);
- RestTemplate restTemplate = new RestTemplate();
- HttpHeaders headers = new HttpHeaders();
- headers.add("Authorization", request.getHeaders().get("Authorization"));
- headers.add("Host", request.getHeaders().get("Host"));
- HttpEntity<?> requestEntity;
- if (requestBody != null) {
- String requestJson = JsonUtils.toJsonString(requestBody);
- requestEntity = new HttpEntity<>(requestJson, headers);
- } else {
- requestEntity = new HttpEntity<>(headers);
- }
- //使用headers方法设置GET请求的头信息, 返回
- return restTemplate.exchange(url, HttpMethod.valueOf(httpMethodName.name()), requestEntity, t);
- }
- }
|