All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.wicp.tams.common.http.HttpCallThread Maven / Gradle / Ivy

The newest version!
/*
 * **********************************************************************
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称:common
 * 项目描述:公共的工具集
 * 版权说明:本软件属andy.zhou([email protected])所有。
 * ***********************************************************************
 */
package net.wicp.tams.common.http;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.protocol.HttpContext;

/***
 * 是否自动销毁。只有在线程池中产生且非saveSession会自动销毁
 * 
 * @author Andy.zhou
 *
 */
public class HttpCallThread extends HttpCallAbs implements Callable {

	private final HttpContext context;
	private final HttpRequestBase httpReq;

	public HttpCallThread(CloseableHttpClient httpClient, HttpRequestBase httpReq, HttpContext context,
			CookieStore cookieStore) {
		super(false, cookieStore);
		this.context = context;
		this.httpReq = httpReq;
	}

	public HttpCallThread(CloseableHttpClient httpClient, HttpRequestBase httpReq, HttpContext context) {
		this(httpClient, httpReq, context, null);
	}

	public HttpCallThread(HttpRequestBase httpReq, CookieStore cookieStore) {
		super(false, cookieStore);
		this.context = HttpClientContext.create();
		this.httpReq = httpReq;
	}

	public HttpCallThread(HttpRequestBase httpReq) {
		this(httpReq, null);
	}

	@Override
	public HttpResult call() {
		HttpResult call = super.call(this.httpReq, this.context);
		return call;
	}

	/***
	 * 异步调用,如果不需要返回值可忽略,如果需要返回值用 task.get(); 会阻塞线程
	 */
	public FutureTask callAsyn() {
		return super.callAsyn(this.httpReq, this.context);
	}

	public HttpResult callBlock() {
		return super.callBlock(this.httpReq, this.context);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy