`

新版apache HttpClient调用http接口

 
阅读更多

新项目中使用新版的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接口

    ### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...

    一个使用HttpClient调用天气预报接口的例程

    在这个例程中,我们将深入探讨如何利用HttpClient来调用一个天气预报接口,并解析返回的JSON数据。以下是一些关键知识点: 1. **HttpClient库**:HttpClient是Apache提供的一个开源库,它允许开发者构建HTTP客户端...

    webservice调用实例,通过HttpClient调用

    总之,通过HttpClient调用Web服务是一个涉及网络通信和HTTP协议理解的过程。在实际开发中,了解HttpClient的使用方法和最佳实践,可以帮助我们构建稳定、高效的Web服务客户端。结合Maven构建工具,可以轻松管理项目...

    httpClient调用远程接口获取数据到本地文件夹

    在这个例子中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用手机号码的数据,并将其存储到本地文件系统。以下是对这个过程的详细解释: 1. **HttpClient的引入与配置**: 首先,我们需要在项目中...

    HttpClient 调用WebService示例

    在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API。HttpClient可以处理这两种类型的Web服务。在本示例中,我们假设...

    httpClient实例httpClient调用 http/https实例 忽略SSL验证

    总结来说,HttpClient提供了一个强大而灵活的接口来处理HTTP请求,而忽略SSL验证的配置则允许我们在非生产环境中快速地进行测试和开发。但请记住,忽视SSL验证在生产环境中可能会导致安全隐患,务必谨慎对待。

    httpClient调用wcf

    这里我们探讨的是如何使用HttpClient调用WCF服务。 HttpClient是Apache的一个开源项目,提供了强大的HTTP协议处理能力,可以用于发送HTTP请求并接收响应。在Java中,HttpClient库是一个常用的工具,它使得开发者...

    httpClient 调用远程接口 获取数据到本地文件夹

    HttpClient是Apache HTTP Components项目的一部分,它是一个强大的Java库,用于执行HTTP请求。在这个场景中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用的新手机号码信息,并将这些数据存储到本地...

    Apache HttpClient Demo

    此外,HttpClient还支持异步操作,通过`HttpAsyncClient`接口,可以在非阻塞的方式下发送HTTP请求,这对于高并发场景尤其有用。异步客户端提供了回调机制,当请求完成或失败时,可以注册监听器来处理结果。 在阅读...

    httpClient调用javaeye API验证用户

    以下是一个关于如何使用HttpClient调用JavaEye API的基本步骤: 1. **导入必要的库**:首先,你需要在项目中导入HttpClient相关的依赖库,通常包括httpclient、httpcore和httpmime等。如果你使用的是Maven或Gradle...

    http远程接口调用-httpClient+跳过SSL证书校验

    本文将详细介绍如何使用Apache HttpClient库进行HTTP远程接口调用,并讲解如何在Java中跳过SSL证书校验。 HttpClient是Apache提供的一款强大的HTTP客户端库,支持多种HTTP协议版本和功能,包括GET、POST请求、...

    使用httpclient方式和RestTemplate方式调用http及https接口

    以下是一个简单的HttpClient调用HTTP接口的示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("http://example.com/api"); CloseableHttpResponse ...

    HttpClient接口调用工具类(附带demo)

    这样的设计使得在代码中调用HTTP请求变得更加简单,无需关心底层实现的细节。 6. **响应处理**: HttpClient返回的`HttpResponse`对象包含了服务器的响应状态码、头部信息以及响应体。工具类可能已经对这些信息...

    org.apache.commons.httpclient相关资源包

    2. **commons-httpclient-3.0.jar**:这就是Apache HttpClient的核心库,提供了HTTP客户端接口和实现。这个版本(3.0)支持HTTP/1.0和HTTP/1.1协议,包含了处理连接管理、多线程请求、SSL/TLS安全连接等功能。用户...

    httpclient方式调用url

    使用HttpClient调用URL的基本步骤包括创建HttpClient实例、构建HttpGet或HttpPost对象、设置请求头(如Content-Type、Authorization等)以及执行请求。 1. **HttpClient实例化**:初始化HttpClient对象,例如: ``...

    Httpclient调用WebService所需jar包

    本篇将详细讲解使用HttpClient调用WebService所需的jar包以及它们的功能。 首先,我们来看标题提到的"Httpclient调用WebService所需jar包"。HttpClient是一个灵活且功能丰富的Java库,它允许开发人员执行各种HTTP...

    httpclient 4.5 相关jar包 (Spring mvc REST风格对外接口,HttpClient调用)

    在"Spring mvc REST风格对外接口,HttpClient调用"这个场景中,我们通常会用到一系列的jar包,其中包括`commons-beanutils-1.9.2.jar`。 `commons-beanutils`是Apache Commons项目的一个组件,主要提供对JavaBeans...

    httpclient和RestfuL风格上传下载文件

    HTTPClient是Apache HttpClient项目提供的一个Java库,它允许开发者发送HTTP请求并接收响应。这个库提供了丰富的API,可以定制请求头、设置连接超时、处理重定向等。使用HTTPClient,你可以方便地实现文件的POST请求...

    httpclient实现webservice客户端

    在IT行业中,HttpClient是Apache软件基金会的一个开源项目,它提供了一种强大的、高度可定制的HTTP客户端API,用于处理HTTP协议。HttpClient库广泛应用于构建Java应用程序,尤其是那些需要与Web服务进行交互的程序。...

    Java 调用Http Rest接口 例子说明

    ### Java调用HTTP REST接口详解 #### 一、引言 在现代软件开发中,RESTful API已经成为一种非常流行的架构风格。它不仅简洁易用,而且支持多种数据格式(如XML、JSON等)。本文将详细介绍如何使用Java语言来调用...

Global site tag (gtag.js) - Google Analytics