in src/main/java/com/aliyun/openservices/log/Client.java [2128:2195]
private ResponseMessage SendData(String project, HttpMethod method, String resourceUri,
Map<String, String> parameters, Map<String, String> headers, byte[] body,
Map<String, String> outputHeader, String serverIp)
throws LogException {
if (resourceOwnerAccount != null && !resourceOwnerAccount.isEmpty()) {
headers.put(Consts.CONST_X_LOG_RESOURCEOWNERACCOUNT, resourceOwnerAccount);
}
try {
signer.sign(method, headers, resourceUri, parameters, body);
} catch (Exception e) {
throw new LogException("ClientSignatureError",
"Fail to calculate signature for request, error:" + e.getMessage(), "");
}
URI uri;
if (serverIp == null) {
uri = GetHostURI(project);
} else {
uri = GetHostURIByIp(serverIp);
}
RequestMessage request = BuildRequest(uri, method,
resourceUri, parameters, headers,
new ByteArrayInputStream(body), body.length);
ResponseMessage response = null;
try {
response = this.serviceClient.sendRequest(request, Consts.UTF_8_ENCODING);
ExtractResponseBody(response);
if (outputHeader != null) {
outputHeader.putAll(response.getHeaders());
}
int statusCode = response.getStatusCode();
if (statusCode != Consts.CONST_HTTP_OK) {
String requestId = GetRequestId(response.getHeaders());
try {
String responseBody = encodeResponseBodyToUtf8String(response, requestId);
JSONObject object = null;
try {
object = JSONObject.parseObject(responseBody, Feature.DisableSpecialKeyDetect);
} catch (JSONException ex) {
throw new LogException(ErrorCodes.BAD_RESPONSE,
"The response is not valid json string : " + responseBody + ", statusCode: "
+ statusCode + ", requestId: " + requestId,
ex, requestId);
}
if (null == object) {
throw new LogException(ErrorCodes.BAD_RESPONSE,
"The response is not valid json string : " + responseBody + ", statusCode: "
+ statusCode + ", requestId: " + requestId,
requestId);
}
ErrorCheck(object, requestId, statusCode, responseBody);
} catch (LogException ex) {
ex.setHttpCode(response.getStatusCode());
throw ex;
}
}
} catch (ServiceException e) {
throw new LogException("RequestError", "Web request failed: " + e.getMessage(), e, "");
} catch (ClientException e) {
throw new LogException("RequestError", "Web request failed: " + e.getMessage(), e, "");
} finally {
try {
if (response != null) {
response.close();
}
} catch (IOException ignore) {}
}
return response;
}