好记性不如烂笔头,开发过程中经常遇到一些问题,把近期用到的一些东西做记录,往后有需要的时候方便查找
json 转javabean工具类 (这里用的是Gson 包)
public class JsonUtil { private static Gson gson = new Gson(); private JsonUtil() { } public static String toJson(Object o) { return gson.toJson(o); } public static <T> T fromJson(String jsonStr, Class<T> t) { return gson.fromJson(jsonStr, t); } }
发送Htpp get 请求:
public static <T> T doHttpGet(String url, Map<String,Object> paramMap, Class<T> t) { // 取出参数,拼接成name1=value1&name2=value2形式 String param = ""; if (paramMap != null && paramMap.size() > 0) { Iterator<String> ite = paramMap.keySet().iterator(); while (ite.hasNext()) { String key = ite.next();// key Object value = paramMap.get(key); param += key + "=" + value + "&"; } param = param.substring(0, param.length() - 1); } 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/5.0 (Windows NT 10.0; WOW64)"); // 建立实际的连接 connection.connect(); // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); return null; } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); return null; } } return JsonUtil.fromJson(result,t); }
发送Http post请求:
public static <T> T doHttpPost(String url, Map<String,Object> paramMap, Class<T> t) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 10.0; WOW64)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 设置请求属性 String param = ""; if (paramMap != null && paramMap.size() > 0) { Iterator<String> ite = paramMap.keySet().iterator(); while (ite.hasNext()) { String key = ite.next();// key Object value = paramMap.get(key); param += key + "=" + value + "&"; } param = param.substring(0, param.length() - 1); } // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream(),"utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { e.printStackTrace(); return null; }finally{ // 关闭流 try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } }catch(IOException ex){ ex.printStackTrace(); return null; } } return JsonUtil.fromJson(result,t); }
这里只能做简单的javabean转换,如果需要转换的是带有泛型的javabean,如下:泛型取值的时候会报转换异常,暂时没解决
public class ReturnData<T> { private String msg; private int code; private T data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public T getData() { return data; } public void setData(T data) { this.data = data; } }
版权声明:本文为原创,转载需标明出处:
https://blog.youkuaiyun.com/max3215/article/details/80612436

本文提供了一个实用的工具类用于JSON与JavaBean之间的转换,并实现了发送HTTP GET和POST请求的功能。同时介绍了如何处理请求参数和响应结果。
1435

被折叠的 条评论
为什么被折叠?



