1

我正在创建一个应用程序来读取事件流并将信息保存在我的数据库中。

我有一个 URL: http://xx.xx.xx.xx:8080/restconf/streams/mno-vnf-event/json headers required: Accept:text/event-stream, Authorization:Basic YWRtaW46o99RtaW4-,Content-Type:application/yang-data+json

现在我想使用java(不是javascript代码)从上面的API中获取流,任何人都有想法来完成这个。

4

2 回答 2

1

如果 SSE 服务器严格遵循 SSE 规范,则不能添加任何自定义标头。

尽管如此,如果确实如此,您是否尝试过使用 Spring WebFlux Client 进行类似的操作:

ResolvableType type = forClassWithGenerics(ServerSentEvent.class, String.class);

WebClient client = WebClient.create();
client.get()
      .uri("http://localhost:8080/sse")
      .accept(TEXT_EVENT_STREAM)
      .header("MyHeader", "Foo") // Add your headers here.
      .exchange()
      .flatMapMany(response -> response.body(toFlux(type)))
      .subscribe(System.out::println,
                 Throwable::printStackTrace);

我已经针对 SSE Undertow 服务器测试了这段代码。它似乎有效:Undertow 能够获取已发送的自定义标头。

于 2018-10-23T15:07:42.840 回答
1

您可以使用一些支持 SSE 的 Java 库:

这些是我首先想到的,但毫无疑问还有更多。

于 2018-10-23T07:46:48.073 回答