使用EventSource库与SSE建立连接时如何传递标头

问题描述

我正在尝试使用Java和以下代码参考来自动化服务器发送事件(SSE):

在使用EvenSource库建立与流的连接之前,我一直坚持传递标头。

public Map<String,String> subscribeClient(String uuid) throws InterruptedException {
    Headers.Builder headerBuilder = new Headers.Builder();
    String dummyHeader1 = "header1:value1";
    String dummyHeade2 = "header2:value2";
    headerBuilder.add(dummyHeader1);
    headerBuilder.add(dummyHeade2);

    Headers myHeader = new Headers(headerBuilder);

    EventHandler eventHandler = new ClientEventHandler();
    String url = String.format("https://stream.wikimedia.org/v2/stream/recentchange");
    EventSource.Builder builder = new EventSource.Builder(eventHandler,URI.create(url)).headers(myHeader);
    System.out.println("client establishing connection");
    try (EventSource eventSource = builder.build()) {
        eventSource.setReconnectionTimeMs(3000);
        eventSource.start();
        TimeUnit.SECONDS.sleep(5);
    }

    System.out.println("execution success");
    return new HashMap() {{
        put("status","success");
    }};
}

在此行将以下错误抛出:Headers myHeader = new Headers(headerBuilder);

'Headers(okhttp3.Headers.Builder)' is not public in 'okhttp3.Headers'. Cannot be accessed from outside package

注意:作为参考,我已经传递了虚拟头。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)