Я пытаюсь написать клиент, который потребляет данные с сервера, путем доступа к интерфейсу, который предоставляет эти данные в виде потока HTTP (он же push сервера HTTP).
Прежде всего необходимо запустить push-режим, выполнив запрос PUT, поэтому я написал следующий код:
JsonObject json = new JsonObject();
json.addProperty("host", "http://myhost");
json.addProperty("port", 443);
json.addProperty("path_prefix", "/Omni/servlet");
json.addProperty("auth_string", "Basic " + "user:pass");
json.addProperty("retry_policy", 0);
json.addProperty("data_format", "base64");
Gson gson = new Gson();
String json_string = gson.toJson(json);
URL url = new URL("https://server.orbiwise.com/rest/pushmode/start");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("PUT");
conn.setRequestProperty("Authorization", "Basic " + "user:pass");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Access-Control-Allow-Origin", "*");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(json_string);
out.close();
if (conn.getResponseCode() == 200) {
System.out.println("SUCCESS!: " + conn.getResponseCode());
} else {
System.out.println("ERROR: " + conn.getErrorStream() + conn.getResponseCode() );
}
В спецификации сказано, что после регистрации через запрос PUTданные будут отправлены по следующему пути / rest / callback / payloads / ul .Поэтому я создал сервлет, используя именно этот путь ( / rest / callback / payloads / ul ) для получения данных, которые сервер должен отправить, но он не работает.
Я прочитал егопроизошло потому, что я должен поддерживать соединение запроса PUT, но я действительно не знаю, как это сделать.Любой совет, или несколько советов о том, как это сделать по-другому.