HttpClient几种实现方式

1.使用java原生HttpURLConnection访问web服务。
public class RTBClient {
	private String url = <a target=_blank href="http://localhost">http://localhost</a>;
	private String port = "8080";
	private String path = "/RTBServer/RTBServer";
	
	public RTBClient() {}
	public Result[] get(DspContext dc) {
		if (null == dc ) {
			return null;
		}
		URL url = null;
		HttpURLConnection urlConn = null;
		try {
			url = new URL(this.url + ":" + this.port + this.path);
			urlConn = (HttpURLConnection) url.openConnection();
			urlConn.setDoOutput(true);
			urlConn.setDoInput(true);
			urlConn.setUseCaches(false);
			urlConn.setRequestProperty("Content-type",
					"application/x-java-serialized-object");
			urlConn.setRequestMethod("POST");
			urlConn.connect();
		} catch (MalformedURLException e1) {
			e1.printStackTrace();
		} catch (ProtocolException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		try {
			OutputStream  outStrm = urlConn.getOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(outStrm);
			oos.writeObject(dc);
			oos.flush();
			oos.close();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
        
		Result[] result;
		try {
			InputStream inStrm = urlConn.getInputStream();
			ObjectInputStream ois = new ObjectInputStream(inStrm);	
			result = (Result[]) (ois.readObject());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (EOFException e) {
			e.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		urlConn.disconnect();
		return null;
	}
}

2.使用Apache的HttpClient包访问web服务。

public class RtbClient {
	private String address = null;
	private int connReqTimeout = 5000;
	private int connTimeout = 5000;
	private int soTimeout = 5000;
	private int maxConn = 100;
	private HttpClient httpClient = null; 
	PoolingHttpClientConnectionManager connManager = null;

	public RtbClient(String address, int connReqTimeout, int connTimeout, int soTimeout, int maxConn) {
		this.address = address;
		this.connReqTimeout = connReqTimeout;
		this.connTimeout = connTimeout;
		this.soTimeout = soTimeout;
		this.maxConn = maxConn;
		RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(this.connTimeout)
				.setConnectionRequestTimeout(this.connReqTimeout)
				.setSocketTimeout(this.soTimeout).build();
		this.connManager = new PoolingHttpClientConnectionManager();
		this.connManager.setMaxTotal(this.maxConn);
		this.httpClient = HttpClientBuilder.create()
				.setConnectionManager(this.connManager).setDefaultRequestConfig(requestConfig).build();
	}

	public void sendReq(String str) {
		HttpPost post = new HttpPost(address);
                  HttpEntity entity = new StringEntity(str);
                  post.setEntity(entity);					
	         HttpResponse response;
		try {
			response = this.httpClient.execute(post);      
			if (null != response) {
				System.out.println(response.getStatusLine().getStatusCode());
			}
		} catch (HttpHostConnectException e) {
			logger.error("client can not connect server!", e);
			e.printStackTrace();
		} catch (Exception e) {
			logger.error("rtb client get method invoke exception!", e);
			e.printStackTrace();
		}
		
		return;
	}
	
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值