0
我有一個模塊,它使用簡單的HTTP帖子從FHEM服務器(家庭自動化)請求狀態(技術上是JSON對象)。Java輪詢或收聽響應的URL [Java SE]
我該如何輪詢requestState方法以持續監聽狀態更改的URL(如每125毫秒)?
[注:我沒有使用任何服務器,這是從main函數調用一個普通的Java程序]
舉一個例子:
public static boolean requestState(){
HttpPost post = new HttpPost("http://localhost:8083/fhem?cmd=jsonlist+device1");
try{
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
//response is a JSONObject
JSONObject o = new JSONObject(result.toString());
//get the status from the JSON object
System.out.println(o.getJSONObject("Result").get("STATE"));
String STATE = o.getJSONObject("Result").get("STATE");
if(STATE.equals("OPEN"))
return false;
else
return true;
}
catch(Exception e){
e.printStackTrace();
}
}
什麼,我想實現的是:
keep listening to URL
parse response to judge the status
if status == OPEN
soundAlarm();
在此先感謝!
嘿謝謝,但我在FHEM上查了很多,不幸的是,通過POST的響應是獲取狀態的唯一方法(截至目前)。 – user3215614
然後我想在無限循環中調用requestState是我想到的唯一選項。如果FHEM服務器無法處理您生成的請求量,您可能需要在輪詢之間插入暫停(使用Thread.sleep) –