Bisher habe ich Informationen von einer Kamera wie folgt geholt:
Jetzt habe ich aber eine Kamera, bei der die Authentifizierung nicht mit Basic, sondern mit Digest funktioniert. Wie muss ich es da schreiben?
Java:
@GetMapping(value = "")
public ByteArrayWrapper getImage(final HttpSession session) {
logger.info("getImage() called");
HttpHeaders headers = createHeaders("admin", "n3H5emqasx3d!");
headers.setContentType(MediaType.TEXT_PLAIN);
try {
String url = "http://1.2.3.4/Streaming/Channels/101/picture";
ResponseEntity<byte[]> exchange = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(headers), byte[].class);
byte[] b = exchange.getBody();
String s = new String(b, StandardCharsets.ISO_8859_1);
return new ByteArrayWrapper(s.getBytes(StandardCharsets.UTF_8));
} catch (Exception e) {
logger.info(e.getMessage());
return null;
}
}
private HttpHeaders createHeaders(String username, String password) {
return new HttpHeaders() {{
String auth = username + ":" + password;
byte[] encodedAuth = Base64.encode(auth.getBytes(Charset.forName("utf8")));
String authHeader = "Basic " + new String(encodedAuth);
set("Authorization", authHeader);
}};
}
Jetzt habe ich aber eine Kamera, bei der die Authentifizierung nicht mit Basic, sondern mit Digest funktioniert. Wie muss ich es da schreiben?