in elasticjob-ecosystem/elasticjob-executor/elasticjob-executor-type/elasticjob-http-executor/src/main/java/org/apache/shardingsphere/elasticjob/http/executor/HttpJobExecutor.java [51:99]
public void process(final ElasticJob elasticJob, final JobConfiguration jobConfig, final JobFacade jobFacade, final ShardingContext shardingContext) {
HttpParam httpParam = getHttpParam(jobConfig.getProps());
HttpURLConnection connection = null;
try {
URL url = new URL(httpParam.getUrl());
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(httpParam.getMethod());
connection.setDoOutput(true);
connection.setConnectTimeout(httpParam.getConnectTimeout());
connection.setReadTimeout(httpParam.getReadTimeout());
if (!Strings.isNullOrEmpty(httpParam.getContentType())) {
connection.setRequestProperty("Content-Type", httpParam.getContentType());
}
connection.setRequestProperty(HttpJobProperties.SHARDING_CONTEXT_KEY, GsonFactory.getGson().toJson(shardingContext));
connection.connect();
String data = httpParam.getData();
if (isWriteMethod(httpParam.getMethod()) && !Strings.isNullOrEmpty(data)) {
try (OutputStream outputStream = connection.getOutputStream()) {
outputStream.write(data.getBytes(StandardCharsets.UTF_8));
}
}
int code = connection.getResponseCode();
InputStream resultInputStream;
if (isRequestSucceed(code)) {
resultInputStream = connection.getInputStream();
} else {
log.warn("HTTP job {} executed with response code {}", jobConfig.getJobName(), code);
resultInputStream = connection.getErrorStream();
}
StringBuilder result = new StringBuilder();
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resultInputStream, StandardCharsets.UTF_8))) {
String line;
while (null != (line = bufferedReader.readLine())) {
result.append(line);
}
}
if (isRequestSucceed(code)) {
log.debug("HTTP job execute result : {}", result.toString());
} else {
log.warn("HTTP job {} executed with response body {}", jobConfig.getJobName(), result.toString());
}
} catch (final IOException ex) {
throw new JobExecutionException(ex);
} finally {
if (null != connection) {
connection.disconnect();
}
}
}