java的HttpURLConnection类封装好的GET/POST请求工具类

来源:互联网 发布:网络ip加速 编辑:程序博客网 时间:2024/06/07 06:55

HttpUtil(引入fastjson.jar包)

import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.Map.Entry;import com.alibaba.fastjson.JSONObject;/** *  * @项目名称: -- * @版权所有: -- * @技术支持: -- * @单元名称: http协议GET/POST请求工具类 * @开始时间: 2017-10-14 * @开发人员: -- */public class HttpUtil {public static void main(String[] args) {String url = "http://localhost:8080/";JSONObject params = new JSONObject();params.put("type", 1);params.put("value", true);System.out.println(doGet(url, params));}/** POST请求 */public static JSONObject doPost(String url, JSONObject params) {JSONObject result = new JSONObject();result.put("success", true);result.put("data", null);result.put("code", 200);result.put("msg", null);OutputStream out = null;DataOutputStream dataOutputStream = null;InputStream in = null;ByteArrayOutputStream baos = null;try {URLConnection urlConnection = new URL(url).openConnection();HttpURLConnection httpUrlConnection = (HttpURLConnection) urlConnection;// 设置是否向httpUrlConnection输出,post请求,参数要放在http正文内,因此需要设为true,// 默认情况下是false;httpUrlConnection.setDoOutput(true);// 设置是否从httpUrlConnection读入,默认情况下是true;httpUrlConnection.setDoInput(true);// 忽略缓存httpUrlConnection.setUseCaches(false);// 设定请求的方法为"POST",默认是GEThttpUrlConnection.setRequestMethod("POST");httpUrlConnection.connect();// 建立输入流,向指向的URL传入参数String queryString = "";if (params != null) {for (Entry<String, Object> entry : params.entrySet()) {queryString += entry.getKey()+ "="+ URLEncoder.encode(entry.getValue().toString(),"UTF-8") + "&";}}if (queryString.length() > 0) {queryString = queryString.substring(0, queryString.length() - 1);out = httpUrlConnection.getOutputStream();dataOutputStream = new DataOutputStream(out);dataOutputStream.writeBytes(queryString);dataOutputStream.flush();out.flush();}// 获得响应状态int responseCode = httpUrlConnection.getResponseCode();if (HttpURLConnection.HTTP_OK == responseCode) {baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;in = httpUrlConnection.getInputStream();while ((len = in.read(buffer)) != -1) {baos.write(buffer, 0, len);baos.flush();}result.put("success", true);result.put("data", baos.toString("UTF-8"));result.put("code", 200);result.put("msg", "请求成功");} else {result.put("success", false);result.put("code", responseCode);result.put("msg", "请求异常");}} catch (Exception e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());} finally {if (baos != null) {try {baos.close();} catch (IOException e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());}}if (in != null) {try {in.close();} catch (IOException e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());}}if (dataOutputStream != null) {try {dataOutputStream.close();} catch (IOException e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());}}if (out != null) {try {out.close();} catch (IOException e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());}}}return result;}/** GET请求 */public static JSONObject doGet(String url, JSONObject params) {JSONObject result = new JSONObject();result.put("success", true);result.put("data", null);result.put("code", 200);result.put("msg", null);InputStream in = null;ByteArrayOutputStream baos = null;try {// URL传入参数String queryString = "";if (params != null) {for (Entry<String, Object> entry : params.entrySet()) {queryString += entry.getKey()+ "="+ URLEncoder.encode(entry.getValue().toString(),"UTF-8") + "&";}}if (queryString.length() > 0) {queryString = queryString.substring(0, queryString.length() - 1);url = url + "?" + queryString;}URLConnection urlConnection = new URL(url).openConnection();HttpURLConnection httpUrlConnection = (HttpURLConnection) urlConnection;// 设置是否向httpUrlConnection输出,post请求,参数要放在http正文内,因此需要设为true,// 默认情况下是false;httpUrlConnection.setDoOutput(false);// 设置是否从httpUrlConnection读入,默认情况下是true;httpUrlConnection.setDoInput(true);// 忽略缓存httpUrlConnection.setUseCaches(false);// 设定请求的方法为"POST",默认是GEThttpUrlConnection.setRequestMethod("GET");httpUrlConnection.connect();// 获得响应状态int responseCode = httpUrlConnection.getResponseCode();if (HttpURLConnection.HTTP_OK == responseCode) {baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;in = httpUrlConnection.getInputStream();while ((len = in.read(buffer)) != -1) {baos.write(buffer, 0, len);baos.flush();}result.put("success", true);result.put("data", baos.toString("UTF-8"));result.put("code", 200);result.put("msg", "请求成功");} else {result.put("success", false);result.put("code", responseCode);result.put("msg", "请求异常");}} catch (Exception e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());} finally {if (baos != null) {try {baos.close();} catch (IOException e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());}}if (in != null) {try {in.close();} catch (IOException e) {result.put("success", false);result.put("code", 500);result.put("msg","请求异常,异常信息:" + e.getClass() + "->" + e.getMessage());}}}return result;}}


阅读全文
0 0
原创粉丝点击