通过 HttpClient 从指定服务器获取数据

第一步:在POM.xml中添加dependency

<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpclient</artifactId>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpmime</artifactId>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpcore-nio</artifactId>
	<scope>compile</scope>
</dependency>

第二步:

package com.beichenyashi.apps.mgr.printagent.service.impl;

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import com.beichenyashi.apps.mgr.printagent.service.IHttpClientTaskService;

/**
 * HttpClient 查询 服务器的信息
 * @author jiangxingqi
 *
 */
@Service
public class HttpClientTaskServiceImpl implements IHttpClientTaskService {
	
	private final static Logger LOGGER = LoggerFactory
			.getLogger(HttpClientTaskServiceImpl.class);
	
	/**
	 * 通过httpClient 轮询获取 最早请求打印任务所对应的 judgeID
	 */
	@Override
	public String getBlockedPrintTaskJudgeId(String ip, int port,String contextPath) {
			
		CloseableHttpClient httpClient = HttpClients.createDefault();

		String url = "http://"+ ip +":"+ port + contextPath + "/common/blocked/task/usedcar/judge/id"; 
		
		// 创建httpGet
		HttpGet httpGet = new HttpGet(url);
		// 执行get请求.
		CloseableHttpResponse response = null;
		//机动车检验记录表的id
		String id=null;
		
		try {
			response = httpClient.execute(httpGet);
			
			// 获取响应实体
			org.apache.http.HttpEntity entity = response.getEntity();
			
			if (entity != null) {
				id = EntityUtils.toString((org.apache.http.HttpEntity) entity);
			}
			
		} catch (ClientProtocolException e) {
			LOGGER.error("url:{} 异常:", url, e);

		} catch (IOException e) {
			LOGGER.error("url:{} 异常:", url, e);
		} finally{
			//关闭response
			if(null != response){
				try {
					response.close();
				} catch (IOException e) {
					LOGGER.error("url:{} 异常:", url, e);
				}
			}
			//关闭httpClient
			try {
				httpClient.close();
			} catch (IOException e) {
				LOGGER.error("url:{} 异常:", url, e);
			}
		}
		
		return id;
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏飞扬的花生

C#实现Excel模板导出和从Excel导入数据

      午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 ? 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.O...

69470
来自专栏腾讯Bugly的专栏

Android 7.0中ContentProvider实现原理

| 导语 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的。 作为Android的四大组件之一,ContentPro...

48260
来自专栏along的开发之旅

C#操作注册表,设置系统环境变量

最近重装系统,NX9.0太大了,不想重装,原来的话重装LicenceServer后,NX9.0是可以直接打开的,但是.NET二次开发的时候有错误,这次试一下添...

10130
来自专栏大内老A

我的WCF之旅(13):创建基于MSMQ的Responsive Service

一、One-way MEP V.S. Responsible Service 我们知道MSMQ天生就具有异步的特性,它只能以One-way的MEP(Messag...

23860
来自专栏c#开发者

Simulate a Windows Service using ASP.NET to run scheduled jobs

Introduction How to run scheduled jobs from ASP.NET without requiring a Windows ...

63270
来自专栏码匠的流水账

java9系列(六)HTTP/2 Client (Incubator)

本文主要研究下JEP 110: HTTP/2 Client (Incubator)

10110
来自专栏一个会写诗的程序员的博客

Spring Boot + JPA + Freemarker 实现后端分页 完整示例Spring Boot + JPA + Freemarker 实现后端分页 完整示例

https://github.com/EasyKotlin/chatper15_net_io_img_crawler

12720
来自专栏我和未来有约会

xml-rpc(1)-first demo

今天简单的研究了一下xml-rpc,做了一个小demo,使得最近开发的一个blog系统可以试用word2007来发表文章,现在还没有具体的实现,只是试Word能...

21190
来自专栏大内老A

谈谈WCF中的Data Contract(4):WCF Data Contract Versioning

软件工程是一门独特的工程艺术,需要解决的是不断改变的需求变化。而对于WCF,对于SOA,由于涉及的是对多个系统之间的交互问题,如何有效地解决不断改变的需求所带来...

26250
来自专栏移动开发的那些事儿

Android中使用Contentprovider导致进程被杀死

Contentprovider也是四大组件之一,支持跨进程调用,因此肯定会用到IPC的Binder机制来实现跨进程调用,在应用层就是AIDL

30610

扫码关注云+社区

领取腾讯云代金券