java常用的HttpURLConnection 方式发送http请求的工具方法
需要的jar包有jsp-api.jar 、servlet-api.jar 、dom4j.jar

package cn.geobeans.fwzx.util;import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.SAXReader;/***@author Leo *@parameter E-mail:15895982509@163.com*@version 创建时间:2016-4-21上午10:30:50*/
public class HttpUtil {private static Logger logger = Logger.getLogger(HttpUtil.class);/*** 获取request请求的ip地址* @param request 请求为HttpServletRequest类型* @return String 类型的ip地址* * */public static String getRemoteHost(HttpServletRequest request){String ip = request.getHeader("x-forwarded-for");if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getHeader("Proxy-Client-IP");}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getHeader("WL-Proxy-Client-IP");}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getRemoteAddr();}return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;}/*** 通过本地路径获取Document对象* @param url String类型本地地址* @return Document类型的数据对象* */public static Document getDocByCLWFSearch(String url) throws DocumentException{SAXReader reader = new SAXReader();Document doc = reader.read(url);return doc;}/*** 通过远程路径发送http请求来获取Document对象* @param url String类型的远程地址* @return Document类型的数据对象* */public static Document getDocByCLWFRoadSearch(String url) throws DocumentException, IOException{URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestProperty("accept", "text/xml");SAXReader reader = new SAXReader();Document doc = reader.read(conn.getInputStream());return doc;}/*** 通过get方法来发送http请求来获取String类型数据,并且对请求的数据进行编码* @param url String类型的远程请求地址* @param encoding String类型的数据编码方式* @return String类型字符串* */public static String getHTMLByGet(String url,String encoding) throws IOException{URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setDoOutput(true);StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),encoding));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();return data.toString();}/*** 通过get方法来发送http请求来获取Document对象* @param url String类型远程请求的地址* @return Document类型对象* */public static Document getDocByGet(String url) throws DocumentException,IOException{URL u=new URL(url);SAXReader reader = new SAXReader();return reader.read(u.openStream());}/*** 通过post方法来发送http请求来获取Document对象* @param url String类型远程请求地址* @param params  Map<String, String>类型的请求参数* @return Document类型对象* */public static Document getDocByPost(String url,  Map<String, String> params) throws DocumentException,IOException  {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);StringBuffer paramStr = new StringBuffer();String sep = "";for (Iterator<String> param = params.keySet().iterator(); param.hasNext();) {String key = param.next();String val = URLEncoder.encode(params.get(key),"UTF-8");if(key.equals("xml") || key.equals("XML")){val= val.replaceAll("\\+", "%20").replaceAll("\\%21", "!").replaceAll("\\%27", "'").replaceAll("\\%28", "(").replaceAll("\\%29", ")").replaceAll("\\%7E", "~");}paramStr.append(sep).append(key).append("=").append(val);sep = "&";}PrintWriter out = new PrintWriter(conn.getOutputStream());out.print(paramStr.toString());out.close();SAXReader reader = new SAXReader();       return reader.read(conn.getInputStream());}/*** 通过get方法来发送http请求来获取Document对象,请求数据无编码* @param url String类型远程请求地址* @param params  Map<String, String>类型的请求参数* @return Document类型对象* */public static Document getDocByPostNoEncoding(String url,  Map<String, String> params) throws DocumentException,IOException  {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);StringBuffer paramStr = new StringBuffer();String sep = "";for (Iterator<String> param = params.keySet().iterator(); param.hasNext();) {String key = param.next();String val = params.get(key);paramStr.append(sep).append(key).append("=").append(val);sep = "&";}PrintWriter out = new PrintWriter(conn.getOutputStream());out.print(paramStr.toString());out.close();SAXReader reader = new SAXReader();   return reader.read(conn.getInputStream());}/*** 通过post方法来发送http请求来获取Document对象,请求数据UTF-8编码* @param url String类型远程请求地址* @param params  Map<String, String>类型的请求参数* @return Document类型对象* */public static Document getDocByPostUTF8(String url,  Map<String, String> params) throws DocumentException,IOException  {StringBuffer paramStr = new StringBuffer();String sep = "";for (Iterator<String> param = params.keySet().iterator(); param.hasNext();) {String key = param.next();String val = params.get(key);paramStr.append(sep).append(key).append("=").append(val);sep = "&";}URL u = new URL(url+"?"+paramStr.toString());HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();Document dods = DocumentHelper.parseText(data.toString());return dods;}/*** 通过post方法来发送http请求来获取Document对象,请求数据进行编码* @param url String类型远程请求地址* @param encode String类型对请求数据进行编码* @return Document类型对象* */public static Document getDocByPost(String url,String encode) throws DocumentException,IOException  {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),encode));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();Document dods = DocumentHelper.parseText(data.toString());return dods;}/*** 通过get方法来发送http请求来获取Document对象,请求数据进行编码* @param url String类型远程请求地址* @param encode String类型对请求数据进行编码* @return Document类型对象* */public static String getStringByGet(String url,String encode) throws DocumentException,IOException  {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("GET");conn.setDoOutput(true);StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),encode));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();return data.toString();}/*** 通过post方法来发送http请求来获取json字符串对象* @param url String类型远程请求地址* @param params String类型的请求参数* @return Json字符串类型* */public static String getJsonDocByPost(String url,  Map<String, String> params) throws IOException {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);StringBuffer paramStr = new StringBuffer();String sep = "";for (Iterator<String> param = params.keySet().iterator(); param.hasNext();) {String key = URLEncoder.encode(param.next(),"UTF-8");String val = params.get(key);paramStr.append(sep).append(key).append("=").append(val);sep = "&";}PrintWriter out = new PrintWriter(conn.getOutputStream());out.print(paramStr.toString());out.close();StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();return data.toString();}/*** 通过post方法来发送http请求来获取json字符串对象,并且进行GBK编码* @param url String类型远程请求地址* @param params String类型的请求参数* @return Json字符串类型* */public static String getJsonDocByPostGBK(String url,  Map<String, String> params) throws IOException  {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);StringBuffer paramStr = new StringBuffer();String sep = "";for (Iterator<String> param = params.keySet().iterator(); param.hasNext();) {String key = param.next();String val = URLEncoder.encode(params.get(key),"GBK");if(key.equals("xml") || key.equals("XML")){val= val.replaceAll("\\+", "%20").replaceAll("\\%21", "!").replaceAll("\\%27", "'").replaceAll("\\%28", "(").replaceAll("\\%29", ")").replaceAll("\\%7E", "~");}paramStr.append(sep).append(key).append("=").append(val);sep = "&";}PrintWriter out = new PrintWriter(conn.getOutputStream());out.print(paramStr.toString());out.close();StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"GBK"));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();return data.toString();}/*** 获取端口的状态* @param ip String类型的ip地址* @param port String类型的端口号* @param timeout int类型的连接时间* @return boolean类型true代表端口通的,false代表端口不通* */public static boolean isReachable(String ip, String port, int timeout) {boolean reachable = false;// 如果端口为空,使用 isReachable 检测,非空使用 socket 检测if(port == null) {try {InetAddress address = InetAddress.getByName(ip);reachable = address.isReachable(timeout);} catch (Exception e) {logger.error(e.getMessage());reachable = false;}} else {Socket socket = new Socket();try {socket.connect(new InetSocketAddress(ip, Integer.parseInt(port)), timeout);reachable = true;} catch (Exception e) {logger.error(e);reachable = false;} finally {try {if(socket != null) socket.close();}catch (Exception e) {}}}return reachable;}/*** 获取服务的连接状态信息* @param url String类型的一个页面地址* @param timeout int类型的连接时间* @return boolean类型true代表端口通的,false代表端口不通* */public static boolean isReacheable(String url, int timeout){try {   HttpURLConnection con=(HttpURLConnection) new URL(url).openConnection();   con.setRequestMethod("HEAD");  con.setConnectTimeout(timeout);if(con.getResponseCode() == 200){return true;}}catch (Exception e) {  logger.error(e);}return false; }/*** 通过post方法发送http请求,并且请求结果采用UTF-8编码* @param url String类型远程请求地址* @param params String类型的请求参数* @return Json类型的字符串* */public static String getJsonDocByPostUTF8(String url,  String params) throws IOException {URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);PrintWriter out = new PrintWriter(conn.getOutputStream());out.print(params);out.close();StringBuffer data = new StringBuffer();BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));String line;while ((line = rd.readLine()) != null) {data.append(line);}rd.close();return data.toString();}}

以上是自己用到的一些java中发送get和post请求的工具方法,希望大家多批评指正,互相学习

java常用的发送http请求的工具方法相关推荐

  1. JavaSocket编写发送TCP请求的工具类

    转自:https://blog.csdn.net/jadyer/article/details/8788303 package com.jadyer.util;import java.io.ByteA ...

  2. 分享一个发送http请求的工具类

    分享一个发送http请求的工具类 maven依赖只需要导入一个 <dependencies><dependency><groupId>commons-httpcli ...

  3. JAVA通过HTTPS发送POST请求的方法

    因为调用一个外部接口,会用到POST请求,而且还是Https的,但是由于之前学习的时候没有用到,所以研究了很久才弄懂了怎么去用JAVA实现Https发送post请求 使用的是HttpsURLConne ...

  4. java 常用四舍五入保留小数点后两位方法

    java 常用四舍五入保留小数点后两位方法 1 . Math.round double num = Math.round(5.2544555 * 100) * 0.01; System.out.pri ...

  5. 通过java.net.URLConnection发送HTTP请求

    为什么80%的码农都做不了架构师?>>>    最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给服务器,post与get ...

  6. java使用Jodd-http发送http请求

    之前写过一篇关于java代码中使用restTemplate发送http请求的文章,那种方式比较复杂一点,现在使用jodd工具包来实现,相对来说简单多 首先在代码中引入jodd-http的依赖 < ...

  7. 发送http请求的工具类

    大家工作中都会遇到使用http请求调用合作商接口的需求,下面分享一个封装好的http请求工具类 1.发送GET请求 /***发送GET方法的请求*/public static String sendG ...

  8. 超好用的后端发送http请求HttpUtils工具类(基于原生http连接,不需要另外导包)

    在项目中,为了实现一些特定的功能,我们常常需要发送http异步请求 ,为此需要特意封装一个实用的HttpUtils工具类 HttpUtils工具类内容如下: package com.zyw.secki ...

  9. java post xmll_HttpClient发送Post请求,内容格式为xml,并获取响应内容

    ChannelDistributor.xml 内容如下: yisou abcd1234 10010000 00 1).HttpClient发送Post请求,内容格式为xml,并获取响应内容 impor ...

最新文章

  1. windows优化大师8周年纪念版_《数码宝贝》20周年纪念:当年的八神太一与亚古兽你还记得吗?...
  2. 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL
  3. 【 Verilog HDL 】正确的变量访问思路
  4. SpringBoot05 数据操作01 - JPA的基本使用、基本使用02
  5. BZOJ 1433 Luogu P2055 [ZJOI2009]假期的宿舍 匈牙利算法
  6. MyEclipse部署Tomcat服务器
  7. django组件 分页器
  8. EF Code First 简单的示例
  9. wordpress 评论ajax,WordPress教程 WordPress实现提交评论ajax翻页效果教程
  10. ZCTF2015 pwn试题分析
  11. 史上最强GAN:训练费10万起,现在免费体验,画风鬼畜又逼真
  12. Unity3D之Json序列化
  13. python使用 difflib 对比 两个文档 差异
  14. Cisco Vpn的安装过程
  15. 【云原生】什么是 CI/CD ?| 软件交付中常见的问题
  16. 前端~css~基准线与行高、行距和半行距/圆角矩形~
  17. 牛客SQL练习-39-针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引
  18. 使用组策略将用户文件夹重定向到D盘
  19. Collection 接口
  20. 对对碰c语言程序设计,C语言对对碰游戏源码分享

热门文章

  1. 那些财务眼中的SAP
  2. SAP,IBM,AC实施之比较
  3. 融合BI+AI,新一代增强型数据分析让制造企业高效解决故障预测分析问题
  4. 瞄准千亿个护市场,纸业龙头们下半场战役已经打响
  5. 美妆AI要抢李佳琦的饭碗?
  6. uniapp 自定义进度条_如何解决uniapp小程序下载进度条问题
  7. 压缩base 64字符串_ftp下载多个文件,ftp下载多个文件打包成一个压缩包
  8. pythonsuper_python中的super()是什么意思呢
  9. 攻防世界-Misc-something_in_image(秒懂!!)
  10. 百分之九十的人不知道?在Python中f-string的几个技巧