BaiDuUtils.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.example.unusualsounds.common.utils;
  2. import static com.baidubce.auth.SignOptions.DEFAULT;
  3. import com.baidubce.auth.BceCredentials;
  4. import com.baidubce.auth.BceV1Signer;
  5. import com.baidubce.auth.DefaultBceCredentials;
  6. import com.baidubce.http.HttpMethodName;
  7. import com.baidubce.internal.InternalRequest;
  8. import com.baidubce.util.JsonUtils;
  9. import org.springframework.http.HttpEntity;
  10. import org.springframework.http.HttpHeaders;
  11. import org.springframework.http.HttpMethod;
  12. import org.springframework.http.ResponseEntity;
  13. import org.springframework.web.client.RestTemplate;
  14. import java.net.URI;
  15. import java.util.HashSet;
  16. import java.util.Map;
  17. import java.util.Set;
  18. public final class BaiDuUtils {
  19. /**
  20. * 发送请求
  21. *
  22. * @param uriStr uri路径
  23. * @param httpMethodName 请求方式
  24. * @param requestBody 请求体
  25. * @param requestParams 请求参数
  26. * @param t 响应体类型
  27. * @param <T> 响应
  28. * @return
  29. */
  30. public static <T> ResponseEntity<T> sendRequest(String uriStr, HttpMethodName httpMethodName, Object requestBody,
  31. Map<String, String> requestParams, Class<T> t, String ak, String sk,String endpoint, String uriPathPrefix) {
  32. String signUrl = String.format("%s%s", endpoint, uriStr);
  33. URI uri = URI.create(signUrl);
  34. InternalRequest request = new InternalRequest(httpMethodName, uri);
  35. // 构建请求 url
  36. String url = String.format("%s%s%s", endpoint, uriPathPrefix, uriStr);
  37. // 构建查询参数
  38. if (requestParams != null && !requestParams.isEmpty()) {
  39. url = url.concat("?");
  40. for (Map.Entry<String, String> entry : requestParams.entrySet()) {
  41. request.addParameter(entry.getKey(), entry.getValue());
  42. url = url.concat(entry.getKey()).concat("=").concat(entry.getValue()).concat("&");
  43. }
  44. url = url.substring(0, url.length() - 1);
  45. }
  46. // 构建签名
  47. BceCredentials credentials = new DefaultBceCredentials(ak, sk);
  48. BceV1Signer bce = new BceV1Signer();
  49. Set<String> setString = new HashSet<>();
  50. setString.add("Host");
  51. DEFAULT.setHeadersToSign(setString);
  52. bce.sign(request, credentials, DEFAULT);
  53. RestTemplate restTemplate = new RestTemplate();
  54. HttpHeaders headers = new HttpHeaders();
  55. headers.add("Authorization", request.getHeaders().get("Authorization"));
  56. headers.add("Host", request.getHeaders().get("Host"));
  57. HttpEntity<?> requestEntity;
  58. if (requestBody != null) {
  59. String requestJson = JsonUtils.toJsonString(requestBody);
  60. requestEntity = new HttpEntity<>(requestJson, headers);
  61. } else {
  62. requestEntity = new HttpEntity<>(headers);
  63. }
  64. //使用headers方法设置GET请求的头信息, 返回
  65. return restTemplate.exchange(url, HttpMethod.valueOf(httpMethodName.name()), requestEntity, t);
  66. }
  67. }