Hinzufügen authorization-header Jersey-SSE-Client-Anfrage
Bin ich mit dem Jersey-client eine Verbindung zu einer SSE-stream. Der server erfordert, dass ich einen header der http-Anforderung für die Genehmigung, aber ich kann nicht herausfinden, wie Sie den header.
Hier ist mein code:
Client client = ClientBuilder.newBuilder().register(SseFeature.class).build();
WebTarget target = client.target(baseurl + "/v1/devices/events/");
eventSource = EventSource.target(target).build();
eventSource.register(getEventListener());
eventSource.open();
Hier ist ein Beispiel für den header muss ich hinzufügen:
Authorization: Bearer 38bb7b318cc6898c80317decb34525844bc9db55
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wäre so etwas wie dies für die Basic-Authentifizierung:
...
Bekommt man bereits das Passwort codiert Jersey.
Und wenn es eine token:
Hoffe, es hilft!
target.request().header("Authorization", "Bearer " + token);
Jersey
verwenden Sie? Könnte Sie posten Sie Ihre Abhängigkeiten? (pom.xml
oder gleichwertig) Was meinst du mit "kein Effekt"? Haben Sie ausgetestet, um zu sehen, wenn der HTTP-header ist es?WebTarget target = client.target(baseUrl + "/v1/devices/events"); target.request().header(HttpHeaders.AUTHORIZATION, "Bearer " + token);
beiSparkEventStream
Sie nicht viel zu tun, um Ihr Ziel; Sie erstellen ein Wunsch und das hinzufügen eines headers auf Anfrage. Aber wenn Sie Ihre eigentliche Anliegen, wo immer es ist, es gibt keine header Hinzugefügt. (Nicht allzu vertraut mit SSE, tut mir Leid, vielleicht bin ich auch etwas zu sagen albern).Hoffe, das hilft dir bei deinem problem.
Den Fall, dass jemand würde wollen, fügen Sie den bearer-token-header auf der
Client
Ebene der Entitäten selbst, sondern auf dieRequest
Ebene der Entitäten (in meinem Fall hatte ich eine factory-Methode für die Rückgabe vorkonfiguriertClient
Entitäten, also hatte ich keine Möglichkeit, das hinzufügen der authorization-header in der Fabrik-Methode, wie.header(...)
wird nur verfügbar, wenn Sie gehen durch dieClientBuilder.newBuilder().register(...).build().target(...).request(...)
call-Kette, die als Jersey-2.x):Leider (wie Sie vielleicht schon erraten haben) dies erfordert eine neue Abhängigkeit:
org.glassfish.jersey.security:oauth2-client
Versuchen Sie dies:
Merke ich, diese Frage ist ein Jahr alt, aber da gibt es nicht viel zu finden zu diesem Thema, ich werde teilen meine Lösung.
Basierend auf vorgeschlagenen OAuth2Feature, ich kam mit dieser Lösung:
Header-provider-Schnittstelle
Benutzerdefinierte Funktion
Benutzerdefinierte filter
Nutzung
Diese Lösung ist generisch, und Sie können einfach fügen Sie einen Authorization-header, ohne dass Sie eine weitere Abhängigkeit.
Folgende Antwort hilfreich ist:
Server Gesendete Ereignis-Client mit zusätzlichen Cookie
Sie verwenden eine benutzerdefinierte WebTarget hinzufügen cookie und auf die gleiche Weise auf header auch funktionieren.
Folgende code ist der code, es zu benutzen:
Hier ist die komplette Beispiele
JS:
Abhängigkeit für die jersey-client -
HTML:
Wenn Sie jercy-client mit header in websource