-Je souhaite communiquer avec une API externe via HTTP à partir du processus implémenté en Java. ・ Je veux mettre du XML dans le corps ・ J'aime quelque chose d'aussi simple que possible à mettre en œuvre.
Reportez-vous à l'article sur le net, OkHttp(https://square.github.io/okhttp/) J'ai utilisé une bibliothèque appelée.
<!-- http client -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.7.0</version>
</dependency>
Dans l'exemple, XML est emballé dans le corps et l'API est appelée. Reçoit la chaîne XML renvoyée par l'API et la renvoie.
public String callSomething(String xml) throws IOException {
return new OkHttpClient().newCall(
new Request.Builder()
.url("[URL de communication]")
// basic authentication
.header("Authorization",
Credentials.basic(
"[Utilisateur d'authentification de base]",
"[Mot de passe d'authentification de base]"))
.post(RequestBody.create(MediaType.parse("text/xml"), xml))
.build()
).execute()
.body()
.string();
}
Quel est le meilleur client HTTP pour Java? https://qiita.com/alt_yamamoto/items/0d72276c80589493ceb4
・ Il n'est pas bon de faire du neuf à chaque fois ・ Il est nécessaire de régler le délai d'expiration de manière appropriée en fonction de l'environnement. Je l'ai corrigé en fonction de ce point.
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class MyService {
private OkHttpClient client;
@PostConstruct
public void init() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(150, TimeUnit.SECONDS);
builder.readTimeout(150, TimeUnit.SECONDS);
builder.writeTimeout(150, TimeUnit.SECONDS);
client = builder.build();
}
public String callSomething(String xml) throws IOException {
try (Response res = client.newCall(
new Request.Builder()
.url("[URL de communication]")
.header("Authorization",
Credentials.basic(
"[Utilisateur d'authentification de base]",
"[Mot de passe d'authentification de base]"))
.post(RequestBody.create(MediaType.parse("text/xml"), xml))
.build()).execute()) {
return res.body().string();
}
}
}
Recommended Posts