-Ich möchte mit einer externen API über HTTP aus dem in Java implementierten Prozess kommunizieren. ・ Ich möchte XML in den Body packen ・ Ich mag etwas, das so einfach wie möglich zu implementieren ist.
Lesen Sie den Artikel im Internet, OkHttp(https://square.github.io/okhttp/) Ich habe eine Bibliothek namens benutzt.
<!-- http client -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.7.0</version>
</dependency>
In diesem Beispiel wird XML in den Body gepackt und die API aufgerufen. Empfängt die von der API zurückgegebene XML-Zeichenfolge und gibt sie zurück.
public String callSomething(String xml) throws IOException {
return new OkHttpClient().newCall(
new Request.Builder()
.url("[Kommunikations-URL]")
// basic authentication
.header("Authorization",
Credentials.basic(
"[Benutzer der Basisauthentifizierung]",
"[Standardauthentifizierungskennwort]"))
.post(RequestBody.create(MediaType.parse("text/xml"), xml))
.build()
).execute()
.body()
.string();
}
Welcher ist der beste HTTP-Client für Java? https://qiita.com/alt_yamamoto/items/0d72276c80589493ceb4
・ Es ist nicht gut, jedes Mal neu zu machen ・ Die Timeout-Zeit muss je nach Umgebung entsprechend eingestellt werden. Ich habe es basierend auf diesem Punkt korrigiert.
@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("[Kommunikations-URL]")
.header("Authorization",
Credentials.basic(
"[Benutzer der Basisauthentifizierung]",
"[Standardauthentifizierungskennwort]"))
.post(RequestBody.create(MediaType.parse("text/xml"), xml))
.build()).execute()) {
return res.body().string();
}
}
}
Recommended Posts