我正在尝试编写一个通过访问接口来消耗服务器数据的客户端 提供此数据作为HTTP流(也称为HTTP服务器推送)。
首先需要通过执行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 )创建了一个Servlet,以接收 服务器应该发送的数据,但是不起作用。
我读到它发生是因为“我必须保持PUT请求的连接处于活动状态,但我真的不知道该怎么做。 每个提示都是不错的选择,或者提供一些其他建议。