Hinweise zur HTTP-Kommunikation mit Java (OkHttp)

Zweck

-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.

Java HTTP Client ... was soll ich verwenden?

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>

Implementierung

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();
}

Referenz

Welcher ist der beste HTTP-Client für Java? https://qiita.com/alt_yamamoto/items/0d72276c80589493ceb4

Nachtrag (13.08.2019)

・ 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

Hinweise zur HTTP-Kommunikation mit Java (OkHttp)
[Java] JSON-Kommunikation mit Jackson
[Hinweis] http-Kommunikation im Zusammenhang (okhttp3)
Fehler beim Spielen mit Java
Java Study Memo 2 mit Progate
Ich habe versucht, UDP mit Java zu kommunizieren
Versuchen Sie die bidirektionale Kommunikation mit gRPC Java
Java-Memo
Beim Aufrufen der API mit Java tritt eine javax.net.ssl.SSLHandshakeException auf
[Java] Vorsichtsmaßnahmen beim Vergleichen von Zeichenfolgen mit Zeichenfolgen
Java alles Memo
Java Silver Memo
HTTP / HTTPS-Kommunikation
Geben Sie ClassPath an, wenn Sie jupyter + Java mit WSL verwenden
Java SE 7 Hinweis
Java alles Memo 2
Java-Spezifikationsnotiz
Java-Muster-Memo
[Java] Berücksichtigung beim Umgang mit negativen Binärzahlen mit Integer.parseInt ()
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
Beachten Sie das Multithread-Problem, wenn Sie mit Java Servlet arbeiten
Lernnotiz beim ersten Lernen von Java (persönliches Lernnotiz)
Installieren Sie Java mit Homebrew
Memo zur Java-Entwicklungsumgebung
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Java Grundwissen Memo
Java-Lernnotiz (Methode)
Java Kuche Day Memo
Bequemer Download mit JAVA
Java Se 8 Programmierer Ⅰ Memo
Java bezahlte private Memo
[OkHttp] REST-API Java SSL
Schalten Sie Java mit direnv
Java-Lernnotiz (grundlegend)
Java Lambda Ausdruck Memo
Java Network Basics (Kommunikation)
(Memo) Java für Anweisung
Java-Download mit Ansible
Java Lambda Ausdruck [Notiz schreiben]
Lass uns mit Java kratzen! !!
Java-Lernnotiz (Schnittstelle)
[Java] Implizites Vererbungsprotokoll
Erstellen Sie Java mit Wercker
Java-Lernnotiz (Vererbung)
Programmiernotiz für Java-Wettbewerbe
[Memo] Java Linked List
Endian-Konvertierung mit JAVA
Ersteinstellungsmethode bei der Erstellung von Alexa Skill mit JAVA (Cloud 9)
Socket-Kommunikation mit einem Webbrowser über Java und JavaScript ②
Informationen zum Verhalten beim Erstellen einer Dateizuordnung mit Java
Socket-Kommunikation mit einem Webbrowser über Java und JavaScript ①
Ein Memo zum Starten der Java-Programmierung mit VS Code (Version 2020-04)
Ein Memo bei der Übergabe von Ruby Silver mit einem offiziellen Lehrbuch