public String invoke(String host, String[] serviceAndMethod, String input)
throws Throwable {
try {
int id = counter.getAndIncrement();
JsonElement request = makeRequest(id, serviceAndMethod, input);
byte[] reqBytes = serialize(request);
// log.debug("request bytes size is " + reqBytes.length);
String url = host + serviceAndMethod[0];
log.info("input: " + input);
log.info("url: " + url);
HttpURLConnection connection = (HttpURLConnection) new URL(url)
.openConnection();
if (_connectTimeout > 0) {
connection.setConnectTimeout(_connectTimeout);
}
if (_readTimeout > 0) {
connection.setReadTimeout(_readTimeout);
}
sendRequest(reqBytes, connection);
byte[] resBytes = null;
resBytes = readResponse(connection);
JsonElement resJson = deserialize(resBytes);
// return parseResult(id, resJson, method);
return resJson.toString();
} catch (IOException e) {
throw new InternalErrorException(e);
}
}