Jersey Client - Header setzen


#1

Ich arbeite an einem einfachen Client für eine Anwendung. Allerdings habe ich Probleme bei einer Rest-Anfrage den Dokumenten-Token in den Header zu packen. Das dies geht steht extra in der Doku der Anwendung. Ich habe es mit Jersey auf folgenden Wegen probiert.

                .header("Token",authenticationEntity.getToken())
                .post(Entity.entity(multiPart, multiPart.getMediaType()));```

```Response response=webTarget
                .request(MediaType.APPLICATION_JSON_TYPE)
                .header("Token",authenticationEntity.getToken())
                .buildPost(Entity.entity(multiPart, multiPart.getMediaType()))
                .invoke();```

Funktionieren beide nicht. Wenn ich allerdings den Token per QueryParam übergebe funktioniert es. (Laut Doku soll beides gehen)

```WebTarget webTarget = client.target(BASE_URL)
                .queryParam("Token",authenticationEntity.getToken());```

Ich nutze Jersey(2.20) zusammen mit Jackson(Womit der Fehler allerdings nichts zu tun haben dürfte).

Sieht jemand was ich beim setzen des Tokens verkehrt mache?

#2

Ich habe jetzt den vermutlichen Fehler gefunden.

        ib.header("token",authenticationEntity.getToken());```
Und nein authenticationEntity.getToken() gibt einen korrekten Token zurück.



Dies ist der Header-Eintrag im Invocation.Builder. Ist  dies ein Bug oder habe ich hier etwas grundlegend nicht verstanden?

#3

[QUOTE=spellsleeper]Ich habe jetzt den vermutlichen Fehler gefunden.

        ib.header("token",authenticationEntity.getToken());```
Und nein authenticationEntity.getToken() gibt einen korrekten Token zurück.



Dies ist der Header-Eintrag im Invocation.Builder. Ist  dies ein Bug oder habe ich hier etwas grundlegend nicht verstanden?[/QUOTE]

Bitte ignorieren. Hier habe ich mich vertan. Fakt ist, dass der Header-Eintrag im requestContext des Invocation.Builders vorhanden ist und auch den richtigen Value hat. Was allerdings für mich leider keine Lösung aufzeigt....

#4

Da es hier nicht viel Bewegung gab habe ich das Problem auch in einem anderem Forum gepostet: www.codeproject.com/Questions/1142015/Problem-to-set-header-with-jersey-for-rest-client.
Im Übrigen habe ich auch noch versucht den Header bei einer REST-Abfrage mit Ruby zu setzen. Dabei funktioniert es. Es liegt also definitiv an Jersey oder wie ich Jersey nutze.


#5

Aktualisierung ich bekomme es bei GET Aufrufen hin.

...
  Invocation.Builder builder=webTarget.request();
            builder.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE);
            builder.header("Token",token);
            builder.buildGet();
            try(InputStream inputStream=builder.get(InputStream.class);...}
...

Wenn ich allerdings auf die gleiche Weise versuche einen POST durchzuführen scheitere ich wieder wegen des Token Header-Parameters obwohl dieses beim Absenden im Builder enthalten ist.
Langsam denke ich die Jersey Client Bibliothek hat einen Bug.