java模拟http请求

时间:2021-01-02 16:59:52

java模拟http发送请求,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求,

方法一:

 1 package main.utils;
2
3 import java.io.*;
4 import java.net.HttpURLConnection;
5 import java.net.URL;
6
7 public class HttpUtilTest {
8 Log log = new Log(this.getClass());//初始化日志类
9 /**
10 * @作用 使用urlconnection
11 * @param url
12 * @param Params
13 * @return
14 * @throws IOException
15 */
16 public String sendPost(String url,String Params)throws IOException{
17 OutputStreamWriter out = null;
18 BufferedReader reader = null;
19 String response="";
20 try {
21 URL httpUrl = null; //HTTP URL类 用这个类来创建连接
22 //创建URL
23 httpUrl = new URL(url);
24 //建立连接
25 HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
26 conn.setRequestMethod("POST");
27 conn.setRequestProperty("Content-Type", "application/json");
28 conn.setRequestProperty("connection", "keep-alive");
29 conn.setUseCaches(false);//设置不要缓存
30 conn.setInstanceFollowRedirects(true);
31 conn.setDoOutput(true);
32 conn.setDoInput(true);
33 conn.connect();
34 //POST请求
35 out = new OutputStreamWriter(
36 conn.getOutputStream());
37 out.write(Params);
38 out.flush();
39 //读取响应
40 reader = new BufferedReader(new InputStreamReader(
41 conn.getInputStream()));
42 String lines;
43 while ((lines = reader.readLine()) != null) {
44 lines = new String(lines.getBytes(), "utf-8");
45 response+=lines;
46 }
47 reader.close();
48 // 断开连接
49 conn.disconnect();
50
51 log.info(response.toString());
52 } catch (Exception e) {
53 System.out.println("发送 POST 请求出现异常!"+e);
54 e.printStackTrace();
55 }
56 //使用finally块来关闭输出流、输入流
57 finally{
58 try{
59 if(out!=null){
60 out.close();
61 }
62 if(reader!=null){
63 reader.close();
64 }
65 }
66 catch(IOException ex){
67 ex.printStackTrace();
68 }
69 }
70
71 return response;
72 }
73 }

 

 方法二:使用httpclient实现

 1 import java.io.UnsupportedEncodingException;
2 import java.net.URLEncoder;
3
4 import main.utils.Log;
5
6 import org.apache.http.client.methods.CloseableHttpResponse;
7 import org.apache.http.client.methods.HttpPost;
8 import org.apache.http.entity.ContentType;
9 import org.apache.http.entity.StringEntity;
10 import org.apache.http.impl.client.CloseableHttpClient;
11 import org.apache.http.impl.client.HttpClients;
12 import org.apache.http.util.EntityUtils;
13
14 //post请求方法
15 public String sendPost(String url, String data) {
16 String response = null;
17 log.info("url: " + url);
18 log.info("request: " + data);
19 try {
20 CloseableHttpClient httpclient = null;
21 CloseableHttpResponse httpresponse = null;
22 try {
23 httpclient = HttpClients.createDefault();
24 HttpPost httppost = new HttpPost(url);
25 StringEntity stringentity = new StringEntity(data,
26 ContentType.create("text/json", "UTF-8"));
27 httppost.setEntity(stringentity);
28 httpresponse = httpclient.execute(httppost);
29 response = EntityUtils
30 .toString(httpresponse.getEntity());
31 log.info("response: " + response);
32 } finally {
33 if (httpclient != null) {
34 httpclient.close();
35 }
36 if (httpresponse != null) {
37 httpresponse.close();
38 }
39 }
40 } catch (Exception e) {
41 e.printStackTrace();
42 }
43 return response;
44 }

 

 

附:httpClient 4.3中文手册,来自开源中国:https://my.oschina.net/u/565871/blog/701214