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 * @作用 使用urlconnection11 * @param url12 * @param Params13 * @return14 * @throws IOException15 */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 //创建URL23 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 = EntityUtils30 .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