読者です 読者をやめる 読者になる 読者になる

Web系開発メモ

Java, SpringBoot, JavaScript, CSS, HTML などの記事を書いています。

SpringBoot:Basic認証のサービスに接続

Spring Boot

SpringBoot の RestTemplate を使って、Basic認証の外部サービス(はてなブログの AtomPub)に接続することがありました。そのときの Javaコード(一部)を書いていこうと思います。

コード

Basic認証の情報を用意してから、RestTemplate を new して接続しています。

import java.util.Base64;
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;

public class Main {

  public static void main(String[] args) {

    String auth = new String(
      Base64.getEncoder().encode(
        "ユーザ:パスワード".getBytes()
      )
    );
    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization","Basic " +  auth);
    HttpEntity<String> req = new HttpEntity<>(headers);
    RestTemplate client = new RestTemplate();
    
    ResponseEntity<String> res = client.exchange(
      "リクエストURL",
      HttpMethod.GET, req, String.class
    );
    System.out.println(res.getBody());
  }
}

二重引用符内の「ユーザ」「パスワード」「リクエストURL」を置き換えればいけると思います。ユーザとパスワードの区切り文字 : は必要です。

補足:ファイルに保存

上の例は結果を標準出力に出していますが、ファイルに保存したい場合もあると思います。外部サービスに接続したときは、java.nio.* を使って保存してみました。

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

// 省略

Files.write(
  Paths.get("ファイルのパス"),
  res.getBody().getBytes(Charset.forName("UTF-8")),
  StandardOpenOption.CREATE
);