1. package com.wdm.utils;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.net.HttpURLConnection;
  8. import java.net.URL;
  9. import java.util.Map;
  10.  
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13.  
  14. public class HttpClientUtils {
  15.  
  16. private static Logger LOGGER = LoggerFactory.getLogger(HttpClientUtils.class);
  17.  
  18. private static int CONNECT_TIME_OUT = 1000;
  19.  
  20. private static int READ_TIME_OUT = 1000;
  21.  
  22. private static byte[] BUFFER = new byte[1024];
  23.  
  24. public static final String DEFAULT_CHARSET = "UTF-8";
  25.  
  26. public static String get(String url) {
  27. return get(url, null, DEFAULT_CHARSET);
  28. }
  29.  
  30. public static String get(String url, String charset) {
  31. return get(url, null, charset);
  32. }
  33.  
  34. public static String get(String url, Map<String, String> header, String charset) {
  35. return get(url, header, charset, CONNECT_TIME_OUT, READ_TIME_OUT);
  36. }
  37.  
  38. public static String get(String url, Map<String, String> header, String charset,
  39. int connectTimeout, int readTimeout) {
  40. String result = "";
  41. try {
  42. HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
  43. connection.setUseCaches(false);
  44. connection.setConnectTimeout(connectTimeout);
  45. connection.setReadTimeout(readTimeout);
  46.  
  47. if (header != null) {
  48. for (Map.Entry<String, String> entry : header.entrySet()) {
  49. connection.setRequestProperty(entry.getKey(), entry.getValue());
  50. }
  51. }
  52.  
  53. ByteArrayOutputStream out = new ByteArrayOutputStream();
  54. int responseCode = connection.getResponseCode();
  55. if (responseCode < HttpURLConnection.HTTP_BAD_REQUEST) {
  56. InputStream is = connection.getInputStream();
  57. int readCount;
  58. while ((readCount = is.read(BUFFER)) > 0) {
  59. out.write(BUFFER, 0, readCount);
  60. }
  61. is.close();
  62. } else {
  63. LOGGER.warn("{} http response code is {}", url, responseCode);
  64. }
  65. connection.disconnect();
  66. result = out.toString();
  67. } catch (IOException e) {
  68. LOGGER.error("{}", e.getMessage(), e);
  69. }
  70. return result;
  71. }
  72.  
  73. public static String post(String url, Map<String, String> params) {
  74. return post(url, params, DEFAULT_CHARSET);
  75. }
  76.  
  77. public static String post(String url, Map<String, String> params, String charset) {
  78. return post(url, params, null, charset);
  79. }
  80.  
  81. public static String post(String url, Map<String, String> params, Map<String, String> header, String charset) {
  82. return post(url, params, header, charset, CONNECT_TIME_OUT, READ_TIME_OUT);
  83. }
  84.  
  85. public static String post(String url, Map<String, String> params, Map<String, String> header,
  86. String charset, int connectTimeout, int readTimeout) {
  87. String result = "";
  88. try {
  89. HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
  90. connection.setRequestMethod("POST");
  91. connection.setDoOutput(true);
  92. connection.setUseCaches(false);
  93. connection.setConnectTimeout(connectTimeout);
  94. connection.setReadTimeout(readTimeout);
  95.  
  96. if (header != null) {
  97. for (Map.Entry<String, String> entry : header.entrySet()) {
  98. connection.setRequestProperty(entry.getKey(), entry.getValue());
  99. }
  100. }
  101.  
  102. StringBuilder builder = new StringBuilder();
  103. if (params != null) {
  104. for (Map.Entry<String, String> entry : params.entrySet()) {
  105. builder.append(entry.getKey());
  106. builder.append("=");
  107. builder.append(entry.getValue());
  108. builder.append("&");
  109. }
  110. }
  111.  
  112. OutputStream out = connection.getOutputStream();
  113. out.write(builder.toString().getBytes(charset));
  114. out.flush();
  115.  
  116. ByteArrayOutputStream bout = new ByteArrayOutputStream();
  117. if (connection.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) {
  118. InputStream is = connection.getInputStream();
  119. int readCount;
  120. while ((readCount = is.read(BUFFER)) > 0) {
  121. bout.write(BUFFER, 0, readCount);
  122. }
  123. is.close();
  124. }
  125. connection.disconnect();
  126. result = bout.toString();
  127. } catch (IOException e) {
  128. LOGGER.error("{}", e.getMessage(), e);
  129. }
  130. return result;
  131. }
  132. }

http请求数据封装的更多相关文章

  1. java框架之Struts2(2)-访问Servlet API及请求数据封装

    准备 为后面测试示例编写代码及配置如下: package com.zze.bean; import java.util.Date; public class User { private String ...

  2. Struts2 请求数据的自动封装 及 自定义转换器类

    请求数据自动封装: 实现原理:使用了参数拦截器.struts-default.xml中 <interceptor name="params" class="com. ...

  3. Struts2第四篇【请求数据自动封装、Action得到域对象】

    前言 前三篇的Struts博文基本把Struts的配置信息讲解完了-..本博文主要讲解Struts对数据的处理 一般地,我们使用Servlet的时候都是分为几个步骤的: 得到web层的数据.封装数据 ...

  4. Java Web请求和响应机制

    1.请求响应流程图 =================== 服务器处理请求的流程: 服务器每次收到请求时,都会为这个请求开辟一个新的线程. 服务器会把客户端的请求数据封装到request对象中,req ...

  5. body-parser Node.js(Express) HTTP请求体解析中间件

    body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...

  6. vue中Axios请求豆瓣API数据并展示到Swipe中

    vue中Axios请求豆瓣API数据并展示到Swipe中 1.首先是安装Axios: 安装方法cnpm install axios --save 等待npm安装完毕: 2.在main.js中引入axi ...

  7. JavaWeb请求-响应学习笔记

    先来看一个流程图: 服务器处理请求的流程: (1)服务器每次收到请求时,都会为这个请求开辟一个新的线程.   (2)服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载 ...

  8. java请求POST发送json格式请求

    public static String upload(String url){ try { HttpClient httpclient = new DefaultHttpClient(); Http ...

  9. 深入 Struts2 的配置 - 处理多个请求-处理请求结果-模型驱动-异常机制

    转:http://www.java3z.com/cwbwebhome/article/article2/2938.html?id=1631 本部分主要介绍struts.xml的常用配置. 1.1.   ...

随机推荐

  1. 一个例子教你理解java回调机制

    网上很多例子都写的很难理解,笔者刚开始都已经弄晕菜了. 这个例子,应该是再简单,再简洁不过的了,例子目的是测试某个方法的执行时间.这里就写三个java类,一个接口,一个实现,还有一个用于测试时间的类. ...

  2. Javascript设计模式理论与实战:工厂方法模式

    本文从简单工厂模式的缺点说起,引入工厂方法模式,介绍的工厂方法模式的基本知识,实现要点和应用场景,最后举例进行说明工厂方法模式的应用.在之前的<Javascript设计模式理论与实战:简单工厂模 ...

  3. .net core 使用 redis

    .net core 使用 redis 个人感觉.net core 对于微软技术而言有很重要的意义 ,所以最近已有时间就想看一看关于.net core 的文章. 今天我就来写一写如何在.net core ...

  4. Privacy Policy of ColorfulBroswer

    Personal information collection this app does not collect your data  and does not share your infomat ...

  5. ASP.NET基于Aspose.Words插入Word水印以及多个水印

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  6. css3 animation动画使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. zTree第四章,异步加载,后端

    后端 ------------------------------------------------------------------------------------------------- ...

  8. Android中线程和线程池

    我们知道线程是CPU调度的最小单位.在Android中主线程是不能够做耗时操作的,子线程是不能够更新UI的.在Android中,除了Thread外,扮演线程的角色有很多,如AsyncTask,Inte ...

  9. JMeter PerfMon Metrics Collector性能监控插件

    官方文档地址https://jmeter-plugins.org/wiki/PerfMon/ JMeter是一款压力测试工具,我们也可以用它来监控服务器资源使用情况. JMeter正常自带可以通过To ...

  10. Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...