Я пытаюсь написать потоковый клиент для HTTP SSE, где мы транслируем документы json с сервера. Я использую OKHttpSSE на стороне клиента для получения документов. У нас есть собственный заголовок Accept для нашего API, и пока я пытаюсь передать пользовательский тип Accept в запросе OKHttp, получаю следующую ошибку «[ERROR] Исключение при использовании источника события ...».
"java.lang.IllegalStateException: Invalid content-type: application/vnd.abc.xyz.platform.pqr-ijk+json; version=1;charset=utf-8"
Note: "vnd.abc.xyz.platform.pqr-ijk+json; version=1;charset=utf-8" is my ACCEPT header.
final Request httpRequest = new Request.Builder()
.url("https://abcd.xyz.com/stream/myresources/")
.addHeader("From", "1234")
.addHeader("Authorization", "myauthtoken")
.addHeader("Accept", "vnd.abc.xyz.platform.pqr-
ijk+json;version=1;")
.build();
final OkHttpClient httpClient = createHttpClient();
final EventSource.Factory sseFactory =
EventSources.createFactory(httpClient);
final EventSourceListener eventSourceListener = new
EventSourceListener() {
/**
* {@inheritDoc}
*/
@Override
public void onOpen(final EventSource eventSource, final Response
response) {
logger.info("EventSource opened...");
}
/**
* {@inheritDoc}
*/
@Override
public void onEvent(final EventSource eventSource, final String
id, final String type, final String data) {
logger.info("{}: {}", id, data);
}
/**
* {@inheritDoc}
*/
@Override
public void onClosed(final EventSource eventSource) {
logger.info("EventSource closed...");
}
/**
* {@inheritDoc}
*/
@Override
public void onFailure(final EventSource eventSource, final
Throwable t, final Response response) {
logger.error("Exception while consuming event source...
[Response:
{}]...", response, t);
}
};
sseFactory.newEventSource(httpRequest, eventSourceListener);
Ниже приведена информация об ошибке
java.lang.IllegalStateException: недопустимый тип содержимого: "vnd.abc.xyz.platform.pqr-ijk + json; версия = 1
по адресу okhttp3.internal.sse.RealEventSource.processResponse (RealEventSource.kt: 60) [okhttp-sse-4.0.0-RC1.jar :?]
по адресу okhttp3.internal.sse.RealEventSource.onResponse (RealEventSource.kt: 46) [okhttp-sse-4.0.0-RC1.jar :?]
на okhttp3.RealCall $ AsyncCall.run (RealCall.kt: 138) [okhttp-4.0.0-RC1.jar :?]
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) [?: 1.8.0_191]
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) [?: 1.8.0_191]
at java.lang.Thread.run (Thread.java:748) [?: 1.8.0_191]