新项目中使用新版的apache HttpClient调用http接口,贴上代码如下
import java.io.InputStream; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.codehaus.jackson.map.ObjectMapper; @SuppressWarnings("unchecked") private static Map<String, String> doGet(String address) { Map<String, String> coordinate = new HashMap<String, String>(); if (StringUtils.isNotEmpty(address)) { try { CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope("test", 123), new UsernamePasswordCredentials("test", "test")); CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider) .build(); Map<String, String> paramsMap = new LinkedHashMap<String, String>(); paramsMap.put("output", "json"); String paramsStr = BaiduSnCal.toQueryString(paramsMap); String wholeStr = new String("" + paramsStr); HttpGet httpGet = new HttpGet(wholeStr); httpGet .addHeader("Referer", ""); // 设置代理 HttpHost proxy = new HttpHost("", 8080); RequestConfig config = RequestConfig.custom().setProxy(proxy).build(); httpGet.setConfig(config); CloseableHttpResponse resp = httpClient.execute(httpGet); InputStream in = resp.getEntity().getContent(); StringWriter w = new StringWriter(); IOUtils.copy(in, w, BaiduSnCal.CHARSET); String result = w.toString(); System.out.println(result); Map<String, Object> returnMap = mapper.readValue(result, Map.class); System.out.println(((Map<String, Object>) returnMap.get("result")).get("location")); } catch (Exception e) { LOGGER.error("error : ", e); } } return coordinate; } public static void main(String[] args) { try { getCoordinateByAddress("test"); } catch (Exception e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") private static void doPost(String address) { String url = ""; try { CloseableHttpClient httpClient = HttpClients.custom().build(); HttpPost httpPost = new HttpPost(url); httpPost.addHeader("Referer", ""); List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); nvps.add(new BasicNameValuePair("", "")); nvps.add(new BasicNameValuePair("output", "json")); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(nvps, ENCODING); httpPost.setEntity(entity); CloseableHttpResponse resp = httpClient.execute(httpPost); InputStream in = resp.getEntity().getContent(); StringWriter w = new StringWriter(); IOUtils.copy(in, w, ENCODING); String result = w.toString(); System.out.println(result); Map<String, Object> returnMap = mapper.readValue(result, Map.class); System.out.println(((Map<String, Object>)returnMap.get("result")).get("location")); System.out.println(returnMap); } catch (Exception e) { e.printStackTrace(); } }
相关推荐
### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...
在这个例程中,我们将深入探讨如何利用HttpClient来调用一个天气预报接口,并解析返回的JSON数据。以下是一些关键知识点: 1. **HttpClient库**:HttpClient是Apache提供的一个开源库,它允许开发者构建HTTP客户端...
总之,通过HttpClient调用Web服务是一个涉及网络通信和HTTP协议理解的过程。在实际开发中,了解HttpClient的使用方法和最佳实践,可以帮助我们构建稳定、高效的Web服务客户端。结合Maven构建工具,可以轻松管理项目...
在这个例子中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用手机号码的数据,并将其存储到本地文件系统。以下是对这个过程的详细解释: 1. **HttpClient的引入与配置**: 首先,我们需要在项目中...
在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API。HttpClient可以处理这两种类型的Web服务。在本示例中,我们假设...
总结来说,HttpClient提供了一个强大而灵活的接口来处理HTTP请求,而忽略SSL验证的配置则允许我们在非生产环境中快速地进行测试和开发。但请记住,忽视SSL验证在生产环境中可能会导致安全隐患,务必谨慎对待。
这里我们探讨的是如何使用HttpClient调用WCF服务。 HttpClient是Apache的一个开源项目,提供了强大的HTTP协议处理能力,可以用于发送HTTP请求并接收响应。在Java中,HttpClient库是一个常用的工具,它使得开发者...
HttpClient是Apache HTTP Components项目的一部分,它是一个强大的Java库,用于执行HTTP请求。在这个场景中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用的新手机号码信息,并将这些数据存储到本地...
此外,HttpClient还支持异步操作,通过`HttpAsyncClient`接口,可以在非阻塞的方式下发送HTTP请求,这对于高并发场景尤其有用。异步客户端提供了回调机制,当请求完成或失败时,可以注册监听器来处理结果。 在阅读...
以下是一个关于如何使用HttpClient调用JavaEye API的基本步骤: 1. **导入必要的库**:首先,你需要在项目中导入HttpClient相关的依赖库,通常包括httpclient、httpcore和httpmime等。如果你使用的是Maven或Gradle...
本文将详细介绍如何使用Apache HttpClient库进行HTTP远程接口调用,并讲解如何在Java中跳过SSL证书校验。 HttpClient是Apache提供的一款强大的HTTP客户端库,支持多种HTTP协议版本和功能,包括GET、POST请求、...
以下是一个简单的HttpClient调用HTTP接口的示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("http://example.com/api"); CloseableHttpResponse ...
这样的设计使得在代码中调用HTTP请求变得更加简单,无需关心底层实现的细节。 6. **响应处理**: HttpClient返回的`HttpResponse`对象包含了服务器的响应状态码、头部信息以及响应体。工具类可能已经对这些信息...
2. **commons-httpclient-3.0.jar**:这就是Apache HttpClient的核心库,提供了HTTP客户端接口和实现。这个版本(3.0)支持HTTP/1.0和HTTP/1.1协议,包含了处理连接管理、多线程请求、SSL/TLS安全连接等功能。用户...
使用HttpClient调用URL的基本步骤包括创建HttpClient实例、构建HttpGet或HttpPost对象、设置请求头(如Content-Type、Authorization等)以及执行请求。 1. **HttpClient实例化**:初始化HttpClient对象,例如: ``...
本篇将详细讲解使用HttpClient调用WebService所需的jar包以及它们的功能。 首先,我们来看标题提到的"Httpclient调用WebService所需jar包"。HttpClient是一个灵活且功能丰富的Java库,它允许开发人员执行各种HTTP...
在"Spring mvc REST风格对外接口,HttpClient调用"这个场景中,我们通常会用到一系列的jar包,其中包括`commons-beanutils-1.9.2.jar`。 `commons-beanutils`是Apache Commons项目的一个组件,主要提供对JavaBeans...
HTTPClient是Apache HttpClient项目提供的一个Java库,它允许开发者发送HTTP请求并接收响应。这个库提供了丰富的API,可以定制请求头、设置连接超时、处理重定向等。使用HTTPClient,你可以方便地实现文件的POST请求...
在IT行业中,HttpClient是Apache软件基金会的一个开源项目,它提供了一种强大的、高度可定制的HTTP客户端API,用于处理HTTP协议。HttpClient库广泛应用于构建Java应用程序,尤其是那些需要与Web服务进行交互的程序。...
### Java调用HTTP REST接口详解 #### 一、引言 在现代软件开发中,RESTful API已经成为一种非常流行的架构风格。它不仅简洁易用,而且支持多种数据格式(如XML、JSON等)。本文将详细介绍如何使用Java语言来调用...