Длинный опрос клиента в Java - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь написать клиент, который потребляет данные с сервера, путем доступа к интерфейсу, который предоставляет эти данные в виде потока 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, но я действительно не знаю, как это сделать.Любой совет, или несколько советов о том, как это сделать по-другому.

...