Twitch API mit HttpURLConnection läuft nicht?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
  1. HTTPUrlConnection ist ein wirklich altes, umständliches API für HTTP. Zu seiner Zeit war es sensationell (damals hatte keine andere Sprache solche Dinge eingebaut), heute ist es eigentlich nur mehr für alten Code sinnvoll. Ich würde dringend den modernen HTTPClient empfehlen, da schrumpft viel Code weg: https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html
  2. Alternativ kannst du auch andere Clients verwenden, falls du kein modernes Java hast und speziellere Anforderungen wie Filter. Die Auswahl ist groß, heute ist OkHttp recht beliebt, der Apache HTTP Client ist wahrscheinlich der meistbenutzte. Wenn man sowieso gegen REST-APIs arbeitet, ist ein JAX-RS-Client praktisch, etwa der von Jersey. https://www.baeldung.com/jersey-jax-rs-client
  3. Solltest du unbedingt HTTPUrlConnection verwenden wollen, kannst du ein begrenztes Tracing über Logs bekommen, damit du siehst was eigentlich passiert: https://stackoverflow.com/a/12296003

alfredo153  26.08.2020, 12:01

Weil's so einfach ist, schnell ausprobiert:

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.twitch.tv/kraken/channels/Test"))
        .header("Client-ID", "nzljca10enva1syj8o2vyojmp636vu")
        .header("Accept", "application/vnd.twitchtv.v5+json") // sonst gibt's ein 410, siehe API-Doku!
        .build();
HttpResponse<String> response =
        client.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.statusCode());
System.out.println(response.body());

Das gibt dir zumindest im Detail aus, was du mit dem API falsch machst, derzeit meckert Twitch dass die Channel ID im falschen Format ist.

0

Mangels Client-ID kann ichs nicht testen. Wenn ich's im Browser versuche, kommt Fehler 400. Gebe ich eine zufällige Client-ID an (4711) kommt der Fehler "Invalid client id specified". Soweit erwartbar. Ob der Fehler in Java nach FileNotFoundException gemappt wird, weiß ich nicht. Schau mal, ob die Exception eine InnerException hat, die mehr verrät - oder wie das in Java heißt...... Hier steht was dazu.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer

derDennis99de 
Beitragsersteller
 23.08.2020, 19:36

habe jetzt e.getCause(); gemacht da kommt nix als Output... hier die Client-ID: nzljca10enva1syj8o2vyojmp636vu
(Kann sie später ja wieder ändern :) )

0