【taotao】HttpClient

2024-08-25 18:48
文章标签 httpclient taotao

本文主要是介绍【taotao】HttpClient,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

	上篇博客中,我们了解到了跨域,并且学会了使用jsonp的方案解决跨域的问题。但频繁的跨域请求,必然
会使得频繁地使用ajax请求数据,而做网站并不推荐大面积使用ajax。
	那么,不使用ajax,我们还可以如何获取数据呢?
【方案】
	在负责页面处理的portal项目中,调用负责业务逻辑的rest项目发布的服务,获得数据,将数据传递给
jsp。要调用服务需要使用java代码模拟浏览器调用服务请求数据。
	因此可以使用HttpClient。
【HttpClient】
	1. 使用步骤
	第一步:把HttpClient使用的jar包添加到工程中。
	第二步:创建一个HttpClient的测试类
	第三步:创建测试方法。
	第四步:创建一个HttpClient对象
	第五步:创建一个HttpGet对象,需要制定一个请求的url
	第六步:执行请求。
	第七步:接收返回结果。HttpEntity对象。
	第八步:取响应的内容
	第九步:关闭HttpGet、HttpClient。
	2. Get请求测试代码

	public void testHttpGet() throws Exception {// 第一步:把HttpClient使用的jar包添加到工程中。// 第二步:创建一个HttpClient的测试类// 第三步:创建测试方法。// 第四步:创建一个HttpClient对象CloseableHttpClient httpClient = HttpClients.createDefault();// 第五步:创建一个HttpGet对象,需要制定一个请求的urlHttpGet get = new HttpGet("http://www.itheima.com");// 第六步:执行请求。CloseableHttpResponse response = httpClient.execute(get);// 第七步:接收返回结果。HttpEntity对象。HttpEntity entity = response.getEntity();// 第八步:取响应的内容。String html = EntityUtils.toString(entity);System.out.println(html);// 第九步:关闭response、HttpClient。response.close();httpClient.close();}

	3.HttpClient工具类代码:

	public class HttpClientUtil {public static String doGet(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}public static String doPost(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建参数列表if (param != null) {List<NameValuePair> paramList = new ArrayList<>();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);httpPost.setEntity(entity);}// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doPost(String url) {return doPost(url, null);}public static String doPostJson(String url, String json) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}}

	4. HttpClient项目应用

	//调用其它项目服务获得数据
	String json = HttpClientUtil.doGet("http://localhost:8081/rest/content/89");
【总结】
	接触的项目越来越多了,而不同的项目都会用到各种不同的框架,不同框架下的项目,各个子项目或各模块
间的调用方法也是不一样的。而在这个项目中,并没有加入其它分布式框架,所以,学习到了解决项目中互相调用
(跨域)的HttpClient解决方案,这应该也算是最基础的解决方案之一。


这篇关于【taotao】HttpClient的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106362

相关文章

Apache HttpClient使用详解

转载地址:http://eksliang.iteye.com/blog/2191017 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟

项目一(一) HttpClient中的POST请求和GET请求

HttpClient中的POST请求和GET请求 一、HttpClient简述 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLU

HttpClient的快速入门使用

目录 一、介绍 二、Get方式请求发送入门案例  实现步骤:  测试结果: 三、Post方式请求发送入门案例  实现步骤: 测试结果: 一、介绍 HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 HttpCl

httpclient支持socks5和http代理调用接口

httpclient支持socks5和http代理调用接口 package com.ruoyi.web.controller.util;import org.apache.http.HttpHost;import org.apache.http.NameValuePair;import org.apache.http.auth.AuthScope;import org.apa

Android的httpclient的post方法获取服务器端的数据(服务器端是get方法)

1.首先建立一个StreamTools类:public class StreamTools { /** * * * @param is * @return */ public static String streamToStr(InputStream is) { try { ByteArrayOutputStream os = new ByteArrayOu

HttpClient库的使用

一、HttpClient的使用步骤 1、生成代表客户端的HttpClient对象 2、生成代表请求的HttpGet对象 3、发送请求,获得服务器返回的HttpResponse对象 4、检测相应状态是否正常 5、获取响应对象当中的数据 二、状态码(即有时界面获取会显示505,等数字) 状态码—: 505——服务器端出现错误 404——客户端出现错误 200——无错误,不会显示,用户

android studio没有org.apache.http.client.HttpClient;等包问题 解决方案

以前用Eclipse做Android开发工具一直使用apache的http做网络请求,最近换用了Android studio发现没有办法引用apache的包,下面是我引用的步骤 转载地址:http://blog.csdn.net/jian51868/article/details/52399263

Android----httpClient的使用

1.1      执行请求 HttpClient的最重要的功能是执行HTTP方法。一个HTTP方法的执行涉及到一个或多个HTTP请求或HTTP响应的交流,HttpClient通常是在内部处理的。用户将提供一个执行请求对象,HttpClient发送请求到目标服务器返回一个相应的响应对象,如果执行失败则抛出一个异常。所以,HttpClient API的主要切入点是HttpClient的接口,它定

HttpClient连接超时及读取超时

HttpClient连接超时及读取超时 httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间; HttpClient连接时间 所谓连接的时候 是HttpClient发送请求的地方开始到连接上目标url主机地址的时间,理论上是距离越短越快, 线路越通畅越快,但是由于路由复杂交错,往往连接上的时间都不固定,运气不好连不上,HttpClien

HttpClient获取响应内容类型Content-Type

HttpClient获取响应内容类型Content-Type 响应的网页内容都有类型也就是Content-Type 通过火狐firebug,我们看响应头信息: 当然我们可以通过HttpClient接口来获取; HttpEntity的getContentType().getValue() 就能获取到响应类型;   1 2 3 4 5 6