用Java实现发送http的get和post请求
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; /** * java发送http的get和post请求 */ public class HttpRequest { /** * 向指定URL发送GET方式的请求 * @param url 发送请求的URL * @param param 请求参数 * @return URL 代表远程资源的响应 */ public static String sendGet(String url, String param){ String result = ""; String urlName = url + "?" + param; try{ URL realUrl = new URL(urlName); //打开和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.connect(); //获取所有的响应头字段 Map<String,List<String>> map = conn.getHeaderFields(); //遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "-->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常" + e); e.printStackTrace(); } return result; } /** * 向指定URL发送POST方式的请求 * @param url 发送请求的URL * @param param 请求参数 * @return URL 代表远程资源的响应 */ public static String sendPost(String url, String param){ 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)"); //发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); //获取URLConnection对象对应的输出流 PrintWriter out = new PrintWriter(conn.getOutputStream()); //发送请求参数 out.print(param); //flush输出流的缓冲 out.flush(); // 定义 BufferedReader输入流来读取URL的响应 BufferedReader 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(); } return result; } //测试发送GET和POST请求 public static void main(String[] args) throws Exception{ //发送GET请求 String s = HttpRequest.sendGet("http://127.0.0.1:8080/index",null); System.out.println(s); //发送POST请求 String s1 = HttpRequest.sendPost("http://localhost:8080/addComment", "questionId=1&content=美丽人生"); System.out.println(s1); } }
//发送get请求时只需将请求参数放在URL字符串之后,用?隔开,程序直接调用URLConnection对象的conncent()方法即可; //如果程序要发送post请求,则需要先设置setDoInput和setDoOutput两个请求头字段的值,在使用URLConnection对应的输出流来发送请求参数,如sendPost()方法中粗体代码所示。
这里可能有的人会遇到中文乱码问题,这里给出几个可能存在的问题:
1. 该类文件的编码格式是否为utf-8
2. 如果使用到数据库,对数据进行写出现乱码,检查类文件和数据库表的编码格式是否统一,设置为utf-8
上一篇:
Java架构师技术进阶路线图
下一篇:
计算机网络初级八股文