[http] Support all 2xx response codes (#12594)

* [http] Add tests
* [http] Treat all success codes as such
* All 2xx http codes mean success, so treat them the same way 200 is.

Fixes #11369

Signed-off-by: Corubba Smith <corubba@gmx.de>
This commit is contained in:
Corubba
2022-05-08 10:53:20 +02:00
committed by GitHub
parent 4e56b9b734
commit 961696ead6
3 changed files with 326 additions and 10 deletions

View File

@@ -13,6 +13,7 @@
package org.openhab.binding.http.internal.http;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@@ -63,18 +64,11 @@ public class HttpResponseListener extends BufferingResponseListener {
logger.warn("Requesting '{}' (method='{}', content='{}') failed: {}", request.getURI(), request.getMethod(),
request.getContent(), result.getFailure().toString());
future.complete(null);
} else if (HttpStatus.isSuccess(response.getStatus())) {
String encoding = Objects.requireNonNullElse(getEncoding(), fallbackEncoding);
future.complete(new Content(getContent(), encoding, getMediaType()));
} else {
switch (response.getStatus()) {
case HttpStatus.OK_200:
byte[] content = getContent();
String encoding = getEncoding();
if (content != null) {
future.complete(
new Content(content, encoding == null ? fallbackEncoding : encoding, getMediaType()));
} else {
future.complete(null);
}
break;
case HttpStatus.UNAUTHORIZED_401:
logger.debug("Requesting '{}' (method='{}', content='{}') failed: Authorization error",
request.getURI(), request.getMethod(), request.getContent());