赞
踩
这里整理了一个http的get请求和post请求的工具类,和使用方法,做个记录,以防日后忘记。
话不多说,直接上代码:
工具类:
- package utils;
-
- import com.alibaba.fastjson.JSONObject;
-
- import javax.net.ssl.HttpsURLConnection;
- import java.io.*;
- import java.net.ConnectException;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.List;
- import java.util.Map;
-
- 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;
- System.out.println(urlNameString);
- 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 = "";
- 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)");
- //设置头信息
- conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
- // 发送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(), "UTF-8"));
- String line;
- while ((line = in.readLine()) != null) {
- result += line;
- }
- } 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;
- }
-
- /**
- * post/GET远程请求接口并得到返回结果
- *
- * @param requestUrl 请求地址
- * @param requestMethod 请求方法post/GET
- * @return
- */
- public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr,String contentType) {
- JSONObject jsonObject = null;
- StringBuffer buffer = new StringBuffer();
- try {
-
- URL url = new URL(requestUrl);
- HttpURLConnection httpUrlConn = (HttpURLConnection)url.openConnection();
- httpUrlConn.setDoOutput(true);
- httpUrlConn.setDoInput(true);
- httpUrlConn.setUseCaches(false);
- // 设置请求方式(GET/POST)
- httpUrlConn.setRequestMethod(requestMethod);
- //设置头信息
- // httpUrlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
- httpUrlConn.setRequestProperty("Content-Type",contentType);
- httpUrlConn.setRequestProperty("Accept","application/json;charset=UTF-8");
- // 设置连接主机服务器的超时时间:15000毫秒
- httpUrlConn.setConnectTimeout(15000);
- // 设置读取远程返回的数据时间:60000毫秒
- httpUrlConn.setReadTimeout(60000);
- if ("GET".equalsIgnoreCase(requestMethod)){
- httpUrlConn.connect();
- }
- // 当有数据需要提交时
- if (null != outputStr) {
- OutputStream outputStream = httpUrlConn.getOutputStream();
- // 注意编码格式,防止中文乱码
- outputStream.write(outputStr.getBytes("UTF-8"));
- outputStream.close();
- }
-
- // 将返回的输入流转换成字符串
- InputStream inputStream = httpUrlConn.getInputStream();
- InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
-
- String str = null;
- while ((str = bufferedReader.readLine()) != null) {
- buffer.append(str);
- }
- bufferedReader.close();
- inputStreamReader.close();
- // 释放资源
- inputStream.close();
- inputStream = null;
- httpUrlConn.disconnect();
- jsonObject = JSONObject.parseObject(buffer.toString());
- } catch (ConnectException ce) {
- } catch (Exception e) {
- }
- return jsonObject;
- }
-
- }
调用工具类:
-
- @ResponseBody
- @RequestMapping(value = "/getGPT",produces = {"application/text;charset=UTF-8"})
- public JSON getGPT() throws IOException {
- String requestMethod = "POST";
- String body = URLEncoder.encode("junshi","UTF-8");//设置要传的信息
- //String url = "https://localhost/api/v1/message/rescue?first=1&keyword1=1&keyword2=2&keyword3=3&keyword4=4&keyword5=5&remark=1";//get请求时格式
- String url = "http://v.juhe.cn/toutiao/index";//post请求时格式
- //测试:访问聚合数据的地区新闻api
- String outputStr = "key=0b3ce1c6f00e322ef4e016675ad5cb2a&type="+body;//post请求时使用outputStr参数
- JSON json = HttpRequest.httpRequest(url,requestMethod,outputStr,"application/x-www-form-urlencoded;charset=UTF-8");
- System.out.println(json);
- return json;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。