使用 Java 原生类库发送 get post 请求
-
下面是整个工具的全部代码,其中用到了
fastjson
:package util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; import com.alibaba.fastjson.JSON; public class HttpUtil {public static String sendGet(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(); // 设置连接方式:get connection.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; } public static String sendPost(String URL,Map<String, Object> map){ OutputStreamWriter out = null; BufferedReader in = null; StringBuilder result = new StringBuilder(); HttpURLConnection conn = null; try{URL url = new URL(URL); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); // 发送 POST 请求必须设置为 true conn.setDoOutput(true); conn.setDoInput(true); // 设置连接超时时间和读取超时时间 conn.setConnectTimeout(30000); conn.setReadTimeout(10000); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Accept", "application/json"); // 获取输出流 out = new OutputStreamWriter(conn.getOutputStream()); // String jsonStr = "{\"qry_by\":\"name\", \"name\":\"Tim\"}"; String jsonStr = JSON.toJSONString(map); out.write(jsonStr); out.flush(); out.close(); // 取得输入流,并使用 Reader 读取 if (200 == conn.getResponseCode()){in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null){result.append(line); } }else{System.out.println("ResponseCode is an error code:" + conn.getResponseCode()); } }catch (Exception e){e.printStackTrace(); }finally { try{if(out != null){out.close(); } if(in != null){in.close(); } }catch (IOException ioe){ioe.printStackTrace(); } } return result.toString();} }
- 在 2019 年 9 月 3 日 15:50:51 测试通过,post 方法中参数采用
map
类型 兼容性更好,可以和spring
配置使用