Command arguments are now represented as JSON arrays, and the
JSON parsing code uses less memory. Previous versions can no
longer receive commands, since they expect command arguments in
the old arg0, arg1, ... form.
conn.setRequestProperty("Authorization", "Basic "+Base64.encodeToString(
(user+':'+password).getBytes(), Base64.NO_WRAP));
conn.connect();
conn.setRequestProperty("Authorization", "Basic "+Base64.encodeToString(
(user+':'+password).getBytes(), Base64.NO_WRAP));
conn.connect();
- final byte[] buf=new byte[4096*1024];
Log.d(getClass().getName(), "Server poll got response code "+conn.getResponseCode()+" and message "+conn.getResponseMessage());
if(conn.getResponseCode()!=200)
return commands;
Log.d(getClass().getName(), "Server poll got response code "+conn.getResponseCode()+" and message "+conn.getResponseMessage());
if(conn.getResponseCode()!=200)
return commands;
- conn.getInputStream().read(buf);
- final JSONArray array=new JSONArray(new String(buf));
- final List<String> list=new ArrayList<String>();
+
+ final JSONArray array;
+ {
+ final byte[] buf=new byte[4096*1024];
+ conn.getInputStream().read(buf);
+ array=new JSONArray(new String(buf));
+ }
+
for(int i=0;i<array.length();i++){
final JSONObject object=array.getJSONObject(i);
for(int i=0;i<array.length();i++){
final JSONObject object=array.getJSONObject(i);
- for(int j=0;object.has("arg"+j);j++)
- list.add(object.getString("arg"+j));
+ final JSONArray jsonargs=object.getJSONArray("args");
+ final String[] args=new String[jsonargs.length()];
+ for(int j=0;j<args.length;j++)
+ args[j]=jsonargs.getString(j);
commands.add(new Command(//NOPMD command changes for each JSON object
toNonNull(object.getString("command")),
commands.add(new Command(//NOPMD command changes for each JSON object
toNonNull(object.getString("command")),
- toNonNull(list.toArray(new String[list.size()])),
toNonNull(object.getString("replyto"))));
toNonNull(object.getString("replyto"))));
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();