在网上找了好久都没有找到post、get请求的工具类,现在整理了一下分享出来。http工具类如下:
package com.qlwb.business.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.lang.reflect.Field;import .URL;import .URLConnection;import java.util.List;import java.util.Map;import java.util.Timer;import java.util.TimerTask;import net.sf.json.JSONObject;import org.apache.log4j.Logger;/*** * * @类编号:* @类名称:HttpRequest* @内容摘要: http post get请求* @author:鹿伟伟* @创建日期:4月13日 下午4:03:50* @修改人:* @修改日期:* @修改描述:简单描述修改的内容* @version 1.0.0* */public class HttpRequest {/*** 向指定URL发送GET方法的请求* * @param url* 发送请求的URL* @param param* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求* * @param url* 发送请求的 URL* @param param* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";Logger.getLogger(HttpRequest.class).info("流量充值开始:"+url+"&"+param);try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}Logger.getLogger(HttpRequest.class).info("流量充值结束:"+result);} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}public static String formatParam(Object o) {StringBuffer sbf= new StringBuffer();Class cls = o.getClass();Field[] fields = cls.getDeclaredFields();try {for (Field f : fields) {f.setAccessible(true);if (!"serialVersionUID".equals(f.getName())) {sbf.append(f.getName() + "=" + (f.get(o)==null?"":f.get(o) )+ "&");}// if (f.get(o) != null && f.get(o) != "") {// }}} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}return sbf.toString().substring(0, sbf.toString().length()-1);}public static void main(String[] args) {//ThirdRechargeReqParams p=new ThirdRechargeReqParams();//p.setMobile("18706402245");//p.setOrderMeal("10");//p.setMsgId("123456");//p.setRange("0");//System.out.println(p.toString());//System.out.println(CreditMallHandle.ThirdFlowRecharge(p));//Timer timer = new Timer(); //timer.schedule(new RequestTask(), 1000,6*1000);//timer.cancel();JSONObject bodyObj = JSONObject.fromObject(HttpRequest.sendPost(":9092/Public/Api/?service=User.buyFlowOrderInfo", "userName=qlyd&userPwd=27e3b7118777a1114fb0c9cc0052d31a614c55da&mobile=18706402245&orderMeal=20&orderTime=1&msgId=23213&extend=&range=0"));System.out.println(bodyObj.getJSONObject("data").getString("code"));}}