[JAVA] So erstellen Sie einen HttpClient, der HttpRequest für einen beliebigen HTTP-Status in org.apache.http.client wiederholt

Auslösen einer HTTP-Anforderung von einem HTTP-Client, der mit "org.apache.http.client" generiert wurde Ich möchte es abhängig vom zurückgegebenen HTTP-Status (200, 404, 503 usw.) erneut versuchen. Es gibt eine Zeit zu sagen und die Lösung zu dieser Zeit.

(Das Projektmitglied sagte mir, dass es schwierig sei, die Version zu schreiben, daher werde ich vorerst die Arbeitsversion schreiben.)

Es wurde bestätigt, in der Umgebung mit zu arbeiten!

Anstelle eines Memorandums, in der Hoffnung, dass es eines Tages jemandem helfen wird.



RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeout).build();

final HttpClientBuilder hcBuilder = HttpClientBuilder.create()
		.setDefaultRequestConfig(requestConfig) 
		//Wiederholen Sie diesen Vorgang, wenn ein HTTP-E / A-Fehler auftritt
		.setRetryHandler(new DefaultHttpRequestRetryHandler()) 
		//Ob ein erneuter Versuch erforderlich ist oder nicht, hängt vom booleschen Wert von retryRequest zum Zeitpunkt der HTTP-Anforderung ab
		.setServiceUnavailableRetryStrategy(new ServiceUnavailableRetryStrategy() {
			@Override
			public boolean retryRequest(
					final HttpResponse response, final int executionCount, final HttpContext context) {
				int statusCode = response.getStatusLine().getStatusCode();
				return Arrays.asList(RETRY_HTTP_STATUSES).contains(statusCode)
						&& executionCount < MAX_RETRY_COUNT;
			}

			@Override
			public long getRetryInterval() {
				return RETRY_INTERVAL_MILLI_SEC;
			}
		});
return hcBuilder.build();
	

Unnötig zu sagen, aber wenn Sie ergänzen -RETRY_HTTP_STATUSES ist ein Array vom Typ "Ganzzahl" und definiert die "HTTP-Statuscodegruppe", die Sie erneut versuchen möchten. MA MAX_RETRY_COUNT definiert die maximale Anzahl von Wiederholungsversuchen. -RETRY_INTERVAL_MILL_SEC definiert die Millisekunde des Wiederholungsintervalls.

Jetzt kann sogar ein Programmierer zum Kopieren / Einfügen einen Wiederholungsvorgang schreiben!

Recommended Posts

So erstellen Sie einen HttpClient, der HttpRequest für einen beliebigen HTTP-Status in org.apache.http.client wiederholt
So erstellen Sie eine Beurteilungsmethode, um nach einem beliebigen Zeichen im Array zu suchen
So machen Sie ein Bild mit Processing teilweise transparent
Wie man ein schattiertes Glas macht
So ändern Sie den Einstellungswert von application.properties beim Booten im Frühjahrsstart
Java - So erstellen Sie JTable
[Schienen] Wie man Samen macht
So erstellen Sie eine JAR-Datei ohne Abhängigkeiten in Maven
So rufen Sie mehrere Namen gleichzeitig in derselben Kategorie auf