`
Franciswmf
  • 浏览: 800300 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

httpclient中的httppost、httpget----调用接口以及main方法直接调用API接口

 
阅读更多
引用参考:
--HttpClient总结一之基本使用
https://www.cnblogs.com/LuckyBao/p/6096145.html
--Java HttpClient使用小结
http://blog.csdn.net/bhq2010/article/details/9210007
--HttpClient的HttpGet和HttpPost工具类
http://blog.csdn.net/william_wei007/article/details/75330686
--通过 GET方式传值的时候,+号会被浏览器处理为空,需要转换为%2b
https://blog.csdn.net/after_you/article/details/77834228

public class salaryPay {
    public static String url = "http://192.168.5.138:8033/";// test环境
    private static String check = url + "newApi/card/salaryPay";
    public static void main(String[] args) {
        HttpUtil.httpPost(check, null, new HttpCallBackListener() {
            @Override
            public void success(int response, Header[] headers, String result) {

                System.out.print(response + "响应数据----" + result);
            }
            @Override
            public void failure(int response) {
                System.err.print(response);
            }
        });
    }
}


    /**
     * HttpClient
     */
    private static final HttpClient client= getHttpClientInstance();

    /**
     * 单例 使Httpclient支持https
     */
    private static HttpClient getHttpClientInstance() {
        X509TrustManager x509mgr = new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] xcs, String string) {
            }

            @Override
            public void checkServerTrusted(X509Certificate[] xcs, String string) {
            }

            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };

        SSLContext sslContext = null;
        try {
            sslContext = SSLContext.getInstance(SSLConnectionSocketFactory.SSL);
            sslContext.init(null, new TrustManager[] { x509mgr }, null);
        } catch (NoSuchAlgorithmException | KeyManagementException e) {
            logger.error("error to init httpclient", e);
        }
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
        connManager.setMaxTotal(200);// 客户端总并行链接最大数
        connManager.setDefaultMaxPerRoute(20); // 每个主机的最大并行链接数

        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
        httpClientBuilder.setConnectionManager(connManager);
        httpClientBuilder.setSSLSocketFactory(sslsf);
        return httpClientBuilder.build();
    }


    /**
     * HttpEntity转化返回为byte数组
     * 
     */
    private static byte[] doChangeEntity2Bytes(HttpEntity entity) throws Exception {
        InputStream inputStream = null;
        try {
            if (entity == null || entity.getContent() == null) {
                throw new RuntimeException("Response Entity Is null");
            }
            inputStream = entity.getContent();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = inputStream.read(buffer)) != -1) {
                out.write(buffer, 0, len);
            }
            out.flush();
            return out.toByteArray();
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
        }
    }


    /**
     * HttpPost
     */
    private static byte[] doHttpPostFun(String address, HttpEntity paramEntity, RequestConfig config) throws Exception {
        HttpPost post = new HttpPost(address);
        try {
            if (paramEntity != null) {
                post.setEntity(paramEntity);
            }
            post.setConfig(config);
            HttpResponse response = client.execute(post);
            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                int code = response.getStatusLine().getStatusCode();
                throw new RuntimeException("HttpPost Request Access Fail Return Code(" + code + ")");
            }
            HttpEntity entity = response.getEntity();
            if (entity == null) {
                throw new RuntimeException("HttpPost Request Access Fail Response Entity Is null");
            }
            return doChangeEntity2Bytes(entity);
        } finally {
            if (post != null) {
                post.releaseConnection();
            }
        }
    }


    /**
     * HttpGet
     */
    private static byte[] doHttpGetFun(String address, RequestConfig config) throws Exception {
        HttpGet get = new HttpGet(address);
        try {
            get.setConfig(config);
            HttpResponse response = client.execute(get);
            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                int code = response.getStatusLine().getStatusCode();
                throw new RuntimeException("HttpGet Access Fail , Return Code(" + code + ")");
            }
            response.getEntity().getContent();
            return doChangeEntity2Bytes(response.getEntity());
        } finally {
            if (get != null) {
                get.releaseConnection();
            }
        }
    }


	private static final Logger logger    = LoggerFactory.getLogger(ClassDemo.class);
	private static final String type = "/demo/mat/{0}/{1}/{2}/Json";
	@Value("${com.demo.check.url}")
	private String baseUrl;
	public EntityResponse checkCardNoAndBank(EntityRequest entityRequest) throws Exception {
		try {
			String url = baseUrl + type;
			logger.info("-->打印日志"url);
			String completeUrl = MessageFormat.format(url, URLEncoder.encode(entityRequest.getName(),"utf-8"),entityRequest.getNo(),URLEncoder.encode(entityRequest.getType(),"utf-8"));
			String json = HttpClientHelper.getDataByGetMethod(completeUrl);
			logger.info("json Resposne >>>" + json);
			return GsonUtils.convertObj(json, EntityResponse.class);
		}catch (Exception e){
		    e.printStackTrace();
		    return null;
		} 
	}



	private boolean doPostFun(Map<String, String> paramsMap){
		boolean rtnFlag=false;
		if(null!=paramsMap&&paramsMap.isEmpty()==false){
			try {
				/**
				 * 形式1:Content-Type: text/plain; charset=UTF-8
				 */
		        String paramJson = GsonUtils.toJson(paramsMap);
		        HttpEntity paramEntity = new StringEntity(paramJson.toString(),"UTF-8");
				respJson = HttpClientUtils.getMethodPostResponse(url, paramEntity);
				/**
				 * 形式2:Content-Type: application/json;charset=utf-8
				 */
			    String paramJson = GsonUtils.toJson(paramsMap);
		        StringEntity entity = new StringEntity(paramJson,"UTF-8");
				entity.setContentType("application/json");
				//
				//post请求
				respJson = HttpClientUtils.getMethodPostResponse(url, entity);
				logger.info("正常->" + respJson);
			} catch (Exception e) {
				e.printStackTrace();
				logger.info("异常->" + e.getMessage());
			}
	        ResponseDto result= GsonUtils.convertObj(respJson, ResponseDto.class);
	        if (null!=result&&StringUtils.isNotBlank(result.getStatus())&&"1".equals(result.getStatus())) {
	        	//成功
	        	logger.info("成功->cid="+paramsMap.get("cid"));
	        	rtnFlag=true;
	        }else{
	        	//失败
	        	logger.info("失败->cid="+paramsMap.get("cid"));
	        }
		}
        return rtnFlag;      
}


Http请求响应信息
=================================================================
【请求信息】
ID: 1091
Address: http://.../Info
Encoding: UTF-8
Http-Method: POST
Content-Type: application/json;charset=UTF-8
Headers: {
Accept=[application/json, text/plain, */*], 
accept-encoding=[gzip, deflate], 
accept-language=[zh-CN,en-US;q=0.8], 
connection=[close], 
Content-Length=[399], 
content-type=[application/json;charset=UTF-8], 
cookie=[_fmdata=4500B47041D0BFFC9DD4B420764A5B0070658214442367DF663AD941615413F75382049B327144F56CE5D4438C8A6D1FF3B248B92A2159F9], 
host=[www.beta.ddcash.cn], 
origin=[http://www.beta.x.cn], 
referer=[http://www.beta.x.cn/], 
user-agent=[Mozilla/5.0 (Linux; Android 7.0; EVA-AL10 Build/HUAWEIEVA-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043124 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN], 
x-forwarded-for=[10.254.30.59], 
x-real-ip=[10.254.30.59], 
x-requested-with=[com.tencent.mm]
}
Payload: {"name":"value"}
【响应信息】
ID: 1091
Response-Code: 200
Content-Type: application/json;charset=utf-8
Headers: {Content-Type=[application/json;charset=utf-8], Date=[Tue, 04 Jul 2017 17:14:55 GMT]}
Payload: {
"name":"value"
}
=================================================================

分享到:
评论

相关推荐

    JAVA利用HttpClient进行HTTPS接口调用

    在`main.java`文件中,我们将看到实际的接口调用逻辑。这通常涉及以下几个步骤: 1. 创建HttpGet或HttpPost对象,指定目标URL。对于HTTPS,URL应以"https://"开头。 2. 如果需要发送数据,可以通过HttpEntity或...

    HttpClient发送http请求(post和get)需要的jar包+内符java代码案例+注解详解

    在本文中,我们将深入探讨HttpClient的基本用法,所需的jar包,以及如何编写Java代码实例。 1. **HttpClient所需Jar包**: 使用HttpClient需要引入以下核心库: - `httpclient.jar`:HttpClient的主要实现库,...

    C#的http发送post和get请求源码

    在C#编程中,HTTP(超文本传输协议)是用于客户端和服务器之间通信的主要协议,主要涉及GET和POST两种常见的请求方法。本文将详细介绍如何在C#中实现这两种请求,并结合给定的文件名,推测这是一个简单的C#桌面应用...

    JAVA发送http get/post请求,调用http接口、方法详解

    在Java编程中,发送HTTP GET和POST请求是常见的任务,特别是在与远程服务器交互或调用API接口时。本文将详细讲解如何使用Java实现这两种请求,以及如何处理响应。我们将使用Apache HttpClient库,这是一个广泛使用的...

    调用第三方接口和将json转化为list的jar包(包含httpClient,httpCore,Gson)

    例如,你可以创建一个`CloseableHttpClient`实例,然后使用`HttpGet`或`HttpPost`对象来构建请求,最后通过`execute`方法发送请求并获取响应。 2. **HTTPCore**: HTTPCore是HTTPClient的基础组件,提供了HTTP连接...

    vs2010中应用get,post与http通信实例

    在这个实例中,我们将深入探讨如何在VS2010中使用C#进行HTTP通信,主要关注GET和POST方法。这两种方法是HTTP协议中最基础且广泛使用的请求类型,用于客户端(如浏览器或应用程序)与服务器之间的数据交换。 GET方法...

    http,get,post调用方法示例

    `HttpClients.createDefault()`会创建一个默认配置的HttpClient实例,`HttpGet`和`HttpPost`则分别代表GET和POST请求对象。`execute()`方法用于发送请求并获取响应,而`getStatusLine().getStatusCode()`则用来获取...

    httpclient发送get请求和post请求demo

    在HttpClient中,发送GET请求可以通过`HttpGet`类实现。以下是一个简单的GET请求示例: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org....

    java调用网易云音乐接口

    在Java编程中,调用网易云音乐接口是一个常见的任务,特别是在构建音乐播放应用或者数据分析项目时。本篇文章将深入探讨如何使用Java与网易云音乐API进行交互,以及如何解析返回的数据。 首先,我们需要理解网易云...

    POST方式调用HTTP接口,附带properties文件的调用

    它与GET方法不同,GET是在URL中携带参数,而POST则将数据放在请求体中,因此POST可以处理更大、更复杂的数据,适合上传文件或传递大量数据。在调用HTTP接口时,我们通常会使用诸如cURL、HttpClient(Java)、...

    httpclient实现webservice客户端

    总结来说,HttpClient是Java开发中实现WebService客户端的理想选择,它提供了丰富的功能和易用的API。通过理解HttpClient的工作原理和使用方法,开发者可以高效地构建和维护与HTTP服务器交互的应用程序。

    C# ashx接口实现 实例

    通过`JieKou`和`JieFaSong`文件夹中的代码,我们可以学习如何创建和调用这样的接口,理解HTTP请求的基本流程,以及在C#中处理HTTP请求和响应的方法。这对于构建分布式系统和API接口具有重要的实践意义。

    C#实现HTTP GET和POST 样例代码

    上述代码创建了一个`HttpClient`实例,然后调用`GetAsync`方法发送GET请求到指定URL。如果请求成功,它会读取响应内容并打印;如果失败,则输出错误信息。 **HTTP POST方法** POST请求通常用于向服务器提交数据,...

    JAVA调用HTTP及httpclient的详细说明

    ### JAVA调用HTTP及httpclient的详细说明 #### 一、引言 在现代软件开发中,客户端和服务端之间的通信通常通过HTTP协议实现。而在Java编程语言中,开发者可以选择多种方式来实现HTTP请求的发送与接收,其中`...

    最新httpclient-4.2.5和httpcore-4.2.4.jar.rar

    在Java Web开发中,HttpClient和HttpCore常用于构建后台服务的HTTP客户端,进行API调用或者爬虫数据抓取。它们提供了丰富的API接口,使得开发者可以方便地构建复杂的HTTP请求,包括设置请求头、携带参数、处理响应等...

    c# 服务端调用RestFul Service的方法

    本文档将详细介绍如何使用 C# 创建和调用 RESTful 接口,包括 RESTful 的基本概念、如何构建 RESTful 风格的 API、服务端的具体实现步骤以及客户端如何调用服务端接口等内容。此外,还将提供详细的代码示例,以便...

    Xamarin android调用web api入门示例

    - 创建一个 `HttpRequestMessage` 对象,指定 HTTP 方法(GET、POST等)、URL 和可选的请求内容。 4. **发送请求并处理响应** - 使用 `HttpClient` 的 `SendAsync` 方法发送请求。 - `SendAsync` 返回一个 `Task...

    http post/get请求所需的jar包,附带post请求源码样例

    本篇将详细讲解这两种请求方法,以及如何在Java中实现它们,同时提供相关的jar包资源。 首先,我们来看GET请求。GET是最常见的HTTP方法,用于从服务器获取资源。URL(统一资源定位符)中携带的所有参数都可见,并且...

    java-to-python:通过http调用接口的方式实现java调用Python程序,进行数据交互

    这种Java调用Python的方法适用于异步操作,比如当Python程序执行耗时的任务(如大数据分析或机器学习模型预测)时,Java程序可以继续执行其他任务,等待Python的响应。此外,这种方式也便于调试和扩展,因为Java和...

    java REST接口测试 测试小例子

    测试代码可能包含了对REST接口的GET、POST、PUT、DELETE等常见HTTP方法的调用,以验证接口的功能是否正常。测试过程中,我们需要模拟不同的输入参数,查看返回的结果是否符合预期。 `HttpUtil.java`文件很可能是...

Global site tag (gtag.js) - Google Analytics