import com.alibaba.fastjson.JSONObject;
import org.apache.log4j.Logger;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;public class HttpUtil {/*** 向指定URL发送GET方法的请求** @param httpurl*            请求参数用?拼接在url后边,请求参数应该是 name1=value1&name2=value2 的形式。* @return result 所表明远程资源的响应结果*/public static String doGet(String httpurl) {HttpURLConnection connection = null;InputStream is = null;BufferedReader br = null;String result = null;// 返回结果字符串try {// 建立远程url链接对象URL url = new URL(httpurl);// 经过远程url链接对象打开一个链接,强转成httpURLConnection类connection = (HttpURLConnection) url.openConnection();// 设置链接方式:getconnection.setRequestMethod("GET");// 设置链接主机服务器的超时时间:15000毫秒connection.setConnectTimeout(15000);// 设置读取远程返回的数据时间:60000毫秒connection.setReadTimeout(60000);// 发送请求connection.connect();// 经过connection链接,获取输入流if (connection.getResponseCode() == 200) {is = connection.getInputStream();// 封装输入流is,并指定字符集br = new BufferedReader(new InputStreamReader(is, "UTF-8"));// 存放数据StringBuffer sbf = new StringBuffer();String temp = null;while ((temp = br.readLine()) != null) {sbf.append(temp);sbf.append("\r\n");}result = sbf.toString();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {// 关闭资源if (null != br) {try {br.close();} catch (IOException e) {e.printStackTrace();}}if (null != is) {try {is.close();} catch (IOException e) {e.printStackTrace();}}connection.disconnect();// 关闭远程链接}return result;}/*** 向指定 URL 发送POST方法的请求** @param httpUrl*            发送请求的 URL* @param param*            请求参数应该是{"key":"==g43sEvsUcbcunFv3mHkIzlHO4iiUIT R7WwXuSVKTK0yugJnZSlr6qNbxsL8OqCUAFyCDCoRKQ882m6cTTi0q9uCJsq JJvxS+8mZVRP/7lWfEVt8/N9mKplUA68SWJEPSXyz4MDeFam766KEyvqZ99d"}的形式。* @return 所表明远程资源的响应结果*/public static String doPost(String httpUrl, String param) {HttpURLConnection connection = null;InputStream is = null;OutputStream os = null;BufferedReader br = null;String result = null;try {URL url = new URL(httpUrl);// 经过远程url链接对象打开链接connection = (HttpURLConnection) url.openConnection();// 设置链接请求方式connection.setRequestMethod("POST");// 设置链接主机服务器超时时间:15000毫秒connection.setConnectTimeout(15000);// 设置读取主机服务器返回数据超时时间:60000毫秒connection.setReadTimeout(60000);// 默认值为:false,当向远程服务器传送数据/写数据时,须要设置为trueconnection.setDoOutput(true);// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数无关紧要connection.setDoInput(true);// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。connection.setRequestProperty("Content-Type", "application/json");// 经过链接对象获取一个输出流os = connection.getOutputStream();// 经过输出流对象将参数写出去/传输出去,它是经过字节数组写出的os.write(param.getBytes());// 经过链接对象获取一个输入流,向远程读取if (connection.getResponseCode() == 200) {is = connection.getInputStream();// 对输入流对象进行包装:charset根据工做项目组的要求来设置br = new BufferedReader(new InputStreamReader(is, "UTF-8"));StringBuffer sbf = new StringBuffer();String temp = null;// 循环遍历一行一行读取数据while ((temp = br.readLine()) != null) {sbf.append(temp);sbf.append("\r\n");}result = sbf.toString();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {// 关闭资源if (null != br) {try {br.close();} catch (IOException e) {e.printStackTrace();}}if (null != os) {try {os.close();} catch (IOException e) {e.printStackTrace();}}if (null != is) {try {is.close();} catch (IOException e) {e.printStackTrace();}}// 断开与远程地址url的链接connection.disconnect();}return result;}/**** @param httpUrl  请求的url* @param param  form表单的参数(key,value形式)* @return*/public static String doPostForm(String httpUrl, Map param) {HttpURLConnection connection = null;InputStream is = null;OutputStream os = null;BufferedReader br = null;String result = null;try {URL url = new URL(httpUrl);// 经过远程url链接对象打开链接connection = (HttpURLConnection) url.openConnection();// 设置链接请求方式connection.setRequestMethod("POST");// 设置链接主机服务器超时时间:15000毫秒connection.setConnectTimeout(15000);// 设置读取主机服务器返回数据超时时间:60000毫秒connection.setReadTimeout(60000);// 默认值为:false,当向远程服务器传送数据/写数据时,须要设置为trueconnection.setDoOutput(true);// 默认值为:true,当前向远程服务读取数据时,设置为true,该参数无关紧要connection.setDoInput(true);// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 经过链接对象获取一个输出流os = connection.getOutputStream();// 经过输出流对象将参数写出去/传输出去,它是经过字节数组写出的(form表单形式的参数实质也是key,value值的拼接,相似于get请求参数的拼接)os.write(createLinkString(param).getBytes());// 经过链接对象获取一个输入流,向远程读取if (connection.getResponseCode() == 200) {is = connection.getInputStream();// 对输入流对象进行包装:charset根据工做项目组的要求来设置br = new BufferedReader(new InputStreamReader(is, "UTF-8"));StringBuffer sbf = new StringBuffer();String temp = null;// 循环遍历一行一行读取数据while ((temp = br.readLine()) != null) {sbf.append(temp);sbf.append("\r\n");}result = sbf.toString();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {// 关闭资源if (null != br) {try {br.close();} catch (IOException e) {e.printStackTrace();}}if (null != os) {try {os.close();} catch (IOException e) {e.printStackTrace();}}if (null != is) {try {is.close();} catch (IOException e) {e.printStackTrace();}}// 断开与远程地址url的链接connection.disconnect();}return result;}/*** 把数组全部元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串* @param params 须要排序并参与字符拼接的参数组* @return 拼接后字符串*/public static String createLinkString(Map<String, String> params) {List<String> keys = new ArrayList<String>(params.keySet());Collections.sort(keys);StringBuilder prestr = new StringBuilder();for (int i = 0; i < keys.size(); i++) {String key = keys.get(i);String value = params.get(key);if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符prestr.append(key).append("=").append(value);} else {prestr.append(key).append("=").append(value).append("&");}}return prestr.toString();}public static void main(String[] args) {String url = "http://localhost:8082/api/conf/findConfList?type=1";String getResult = HttpUtil.doGet(url);System.out.println(getResult);url = "http://localhost:8082/api/core/login";JSONObject json = new JSONObject();json.put("key", "==g43sEvsUcbcunFv3mHkIzlHO4iiUIT R7WwXuSVKTK0yugJnZSlr6qNbxsL8OqCUAFyCDCoRKQ882m6cTTi0q9uCJsq JJvxS+8mZVRP/7lWfEVt8/N9mKplUA68SWJEPSXyz4MDeFam766KEyvqZ99d");String postResult = HttpUtil.doPost(url, json.toJSONString());System.out.println(postResult);url = "http://localhost:8082/api/test/testSendForm";Map<String,String> map = new HashMap<>();map.put("name", "测试表单请求");String formResult = HttpUtil.doPostForm(url, map);System.out.println(formResult);}}

java封装HTTP请求(GETPOSTFORM)相关推荐

  1. java封装拦截请求_Retrofit,OkHttp拦截器,RxJava封装请求网络

    Retrofit和Okhttp和RxJava的封装 导入依赖 compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex. ...

  2. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装...

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  3. java封装入参_Spring Gateway自定义请求参数封装的实现示例

    一.需求 在使用spring gateway作为网关时,我们需要在经过网关的请求中添加一些需要传递给后续服务的公共参数,这个时候就可以用到spring gateway提供的自定义请求参数功能了. 二. ...

  4. java实现https请求

    参考: https://www.cnblogs.com/chinway/p/5802541.html java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易 ...

  5. Java封装OkHttp3工具类

    点击关注公众号,Java干货及时送达  作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...

  6. 简单封装 HTTP 请求

    2017-2-19 更新到第二版: 源码地址:http://git.oschina.net/sp42/ajaxjs/tree/master/ajaxjs-base/src/com/ajaxjs/net ...

  7. Java 实现 HTTP 请求的三种方式

    除了本文推荐的几种方式,强烈推荐 OkHttp 目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较 ...

  8. Anroid-async-http封装网络请求框架源码分析

    Android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单, 这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库, ...

  9. java实现HTTP请求的三种方式

    From: https://www.cnblogs.com/hhhshct/p/8523697.html 目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的 ...

最新文章

  1. js php 获取时间倒计时_,js实现倒计时及时间对象
  2. Zookeeper分布式一致性原理(八):Zookeeper典型应用场景
  3. mysql 5.7 主从切换_mysql5.7 主从复制的正常切换【转】
  4. js原生带缩略图的图片切换效果
  5. 深入浅出谈CUDA(二)
  6. 使用wordpress_为什么我使用WordPress进行教育
  7. codevs——2152 滑雪
  8. [转贴]降低网络延迟的方法
  9. 【收藏】ASP.NET英文技术文章推荐[11/4 - 11/11]
  10. 网页访问计数器 html,网页计数器(访问量)
  11. C++ - Opencv模板匹配与块匹配
  12. 易语言x64位封包拦截技术
  13. 计算机 人脑 发热 ppt,人脑即电脑,疯狂的大脑进化史,大脑科学的革命
  14. python实现自动点击桌面按钮_Python实现鼠标隔几秒自动点击电脑某区域
  15. Power oj 2837: 剑道万古如长夜(单调队列优化DP)
  16. sql中的大于小于等于的表示
  17. 银联商务管理层换血:光大控股后撤,曾因违规被罚没3267万元
  18. Linux红帽RedHat 8升级更新Firefox火狐浏览器版本方法
  19. 单片机应用系统设计技术——基于51单片机篮球计时计分器的设计
  20. ilove中文_ILOVEYOU是什么意思

热门文章

  1. 6翻了,这999页《Java求职面试宝典》助我上阿里
  2. 更好玩的QQ空间新版即将亮相(转)
  3. 告诉你真正的WDS及部署经验
  4. 如何看穿数据可视化的谎言?
  5. Python输出完全数
  6. HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)
  7. Linux基础篇–shell脚本编程基础
  8. 移动端web开发( 01)
  9. 我与我的职业梦想 – 成为一名优秀的软件工程师
  10. 私はついにあなたを失った作者婷雨