亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以使用 Spring Boot 使用別人的 API 發出請求嗎?

我可以使用 Spring Boot 使用別人的 API 發出請求嗎?

墨色風雨 2023-06-28 16:10:06
我對 Spring 很陌生,我正在嘗試理解它。我可以使用Spring boot來調用別人的api嗎?例如,我使用的 api 需要使用他們給我的憑據進行身份驗證。我想使用他們的 API 來發出 POST 請求。到目前為止,我已經找到了與使用您自己的 API 相關的文檔。這些請求還需要傳遞標頭。我可以使用 Spring 傳遞我的憑據和所需標頭來執行 POST 請求的最簡單方法是什么?任何幫助,將不勝感激。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

如果我很了解你,你需要發布另一個帶有憑據的網絡API,你可以使用


RestTemplate 就像下面的例子

 public List<EtisAccount> getAllActiveAccount(){

        logger.debug("Debug: in Class \t"+this.getClass().getName()+" Method Name is: \t"+new Object() {}.getClass().getEnclosingMethod().getName());

        Properties sprinklrProp=sprinklrProperties.getSprinklrKeys();

        SprinklrCredential sprinklrCredential=credentialBuilder.getSprinklrCredential();

        RestTemplate restTemplate= new RestTemplate();

        HttpHeaders header = new HttpHeaders();

        header.setBearerAuth(sprinklrCredential.getAccess_token());

        header.add("key", sprinklrCredential.getApi_key());

        header.set("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);

        UriComponentsBuilder uriBuilder= UriComponentsBuilder.fromUriString(sprinklrProp.getProperty("sprinlrUri").toString())

                .queryParam("types", sprinklrProp.getProperty("accountTypes").toString());

        HttpEntity<String> entity= new HttpEntity<>(header);

        sslCertificateValidation.disable();

        ResponseEntity<String> sprinklrResponse=restTemplate.exchange(uriBuilder.toUriString(),HttpMethod.GET,entity,  String.class);

        List<EtisAccount> activeAccouts=etisAccountHelper.getAllSocialEtisAccounts(sprinklrResponse.getBody());

        logger.debug(String.valueOf(sprinklrResponse.getStatusCodeValue()));

        logger.debug(activeAccouts.toString());

        return activeAccouts;

    }


這是使用 RestTemplate 調用在線 API 的示例


在這里我用憑據構建標頭(不記名身份驗證)


        HttpHeaders header = new HttpHeaders();

        header.setBearerAuth(sprinklrCredential.getAccess_token());

        header.add("key", sprinklrCredential.getApi_key());

        header.set("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);


在這里我添加標頭 requestEntity 以添加到 Resttemplate 請求


     HttpEntity<String> entity= new HttpEntity<>(header);

在這里我使用交換方法得到響應


   ResponseEntity<String> sprinklrResponse=restTemplate.exchange(uriBuilder.toUriString(),HttpMethod.POST,entity,  String.class);



查看完整回答
反對 回復 2023-06-28
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

你需要以下東西:

  1. 從https://start.spring.io/創建一個 Spring Web 入門項目

  2. 在項目中創建一個新的 Java 類并為其命名Controller。@RestController在類級別添加注釋。

  3. 在SpringBootApplication中配置RestTemplate對象

  4. 在類中自動裝配該RestTemplate對象Controller

  5. 在類中創建一個方法Controller,使用RestTemplate,將調用@PostMapping他們的 API。


查看完整回答
反對 回復 2023-06-28
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

  • 你可以嘗試這個方法

  • 這是簡單的方法

  • 您可以將用戶名和密碼設置為基本身份驗證

  public class RESTInvoker {

        private final String baseUrl;

        private final String username;

        private final String password;


        public RESTInvoker(String baseUrl, String username, String password) {

            this.baseUrl = baseUrl;

            this.username = username;

            this.password = password;

        }




        String getDataFromServer(String path) {

            StringBuilder sb = new StringBuilder();

            try {

                URL url = new URL(baseUrl + path);

                URLConnection urlConnection = setUsernamePassword(url);

                BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

                String line;

                while ((line = reader.readLine()) != null) {

                    sb.append(line);

                }

                reader.close();


                return sb.toString();

            } catch (Exception e) {

                throw new RuntimeException(e);

            }

        }


        private URLConnection setUsernamePassword(URL url) throws IOException {

            URLConnection urlConnection = url.openConnection();

            String authString = username + ":" + password;

            String authStringEnc = new String(Base64.encodeBase64(authString.getBytes()));

            urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);

            return urlConnection;

        }

    }


查看完整回答
反對 回復 2023-06-28
  • 3 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號