|
|
|
@ -4,64 +4,82 @@ import com.xxl.job.core.biz.model.ReturnT; |
|
|
|
|
import com.xxl.job.core.handler.IJobHandler; |
|
|
|
|
import com.xxl.job.core.handler.annotation.JobHandler; |
|
|
|
|
import com.xxl.job.core.log.XxlJobLogger; |
|
|
|
|
import org.eclipse.jetty.client.HttpClient; |
|
|
|
|
import org.eclipse.jetty.client.api.ContentResponse; |
|
|
|
|
import org.eclipse.jetty.client.api.Request; |
|
|
|
|
import org.eclipse.jetty.http.HttpMethod; |
|
|
|
|
import org.eclipse.jetty.http.HttpStatus; |
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
import java.io.BufferedReader; |
|
|
|
|
import java.io.InputStreamReader; |
|
|
|
|
import java.net.HttpURLConnection; |
|
|
|
|
import java.net.URL; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 跨平台Http任务 |
|
|
|
|
* |
|
|
|
|
* @author xuxueli 2018-09-16 03:48:34 |
|
|
|
|
*/ |
|
|
|
|
@JobHandler(value="httpJobHandler") |
|
|
|
|
@JobHandler(value = "httpJobHandler") |
|
|
|
|
@Component |
|
|
|
|
public class HttpJobHandler extends IJobHandler { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public ReturnT<String> execute(String param) throws Exception { |
|
|
|
|
@Override |
|
|
|
|
public ReturnT<String> execute(String param) throws Exception { |
|
|
|
|
|
|
|
|
|
// valid
|
|
|
|
|
if (param==null || param.trim().length()==0) { |
|
|
|
|
XxlJobLogger.log("URL Empty"); |
|
|
|
|
return FAIL; |
|
|
|
|
} |
|
|
|
|
// request
|
|
|
|
|
HttpURLConnection connection = null; |
|
|
|
|
BufferedReader bufferedReader = null; |
|
|
|
|
try { |
|
|
|
|
// connection
|
|
|
|
|
URL realUrl = new URL(param); |
|
|
|
|
connection = (HttpURLConnection) realUrl.openConnection(); |
|
|
|
|
|
|
|
|
|
// httpclient
|
|
|
|
|
HttpClient httpClient = null; |
|
|
|
|
try { |
|
|
|
|
httpClient = new HttpClient(); |
|
|
|
|
httpClient.setFollowRedirects(false); // Configure HttpClient, for example:
|
|
|
|
|
httpClient.start(); // Start HttpClient
|
|
|
|
|
// connection setting
|
|
|
|
|
connection.setRequestMethod("GET"); |
|
|
|
|
connection.setDoOutput(true); |
|
|
|
|
connection.setDoInput(true); |
|
|
|
|
connection.setUseCaches(false); |
|
|
|
|
connection.setReadTimeout(5 * 1000); |
|
|
|
|
connection.setConnectTimeout(3 * 1000); |
|
|
|
|
connection.setRequestProperty("connection", "Keep-Alive"); |
|
|
|
|
connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); |
|
|
|
|
connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8"); |
|
|
|
|
|
|
|
|
|
// request
|
|
|
|
|
Request request = httpClient.newRequest(param); |
|
|
|
|
request.method(HttpMethod.GET); |
|
|
|
|
request.timeout(5000, TimeUnit.MILLISECONDS); |
|
|
|
|
// do connection
|
|
|
|
|
connection.connect(); |
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
ContentResponse response = request.send(); |
|
|
|
|
if (response.getStatus() != HttpStatus.OK_200) { |
|
|
|
|
XxlJobLogger.log("Http StatusCode({}) Invalid.", response.getStatus()); |
|
|
|
|
return FAIL; |
|
|
|
|
} |
|
|
|
|
//Map<String, List<String>> map = connection.getHeaderFields();
|
|
|
|
|
|
|
|
|
|
String responseMsg = response.getContentAsString(); |
|
|
|
|
XxlJobLogger.log(responseMsg); |
|
|
|
|
return SUCCESS; |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
XxlJobLogger.log(e); |
|
|
|
|
return FAIL; |
|
|
|
|
} finally { |
|
|
|
|
if (httpClient != null) { |
|
|
|
|
httpClient.stop(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// valid StatusCode
|
|
|
|
|
int statusCode = connection.getResponseCode(); |
|
|
|
|
if (statusCode != 200) { |
|
|
|
|
throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
// result
|
|
|
|
|
bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); |
|
|
|
|
StringBuilder result = new StringBuilder(); |
|
|
|
|
String line; |
|
|
|
|
while ((line = bufferedReader.readLine()) != null) { |
|
|
|
|
result.append(line); |
|
|
|
|
} |
|
|
|
|
String responseMsg = result.toString(); |
|
|
|
|
|
|
|
|
|
XxlJobLogger.log(responseMsg); |
|
|
|
|
return SUCCESS; |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
XxlJobLogger.log(e); |
|
|
|
|
return FAIL; |
|
|
|
|
} finally { |
|
|
|
|
try { |
|
|
|
|
if (bufferedReader != null) { |
|
|
|
|
bufferedReader.close(); |
|
|
|
|
} |
|
|
|
|
if (connection != null) { |
|
|
|
|
connection.disconnect(); |
|
|
|
|
} |
|
|
|
|
} catch (Exception e2) { |
|
|
|
|
XxlJobLogger.log(e2); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|