| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- package com.steerinfo.dil.util;
- import com.alibaba.fastjson.JSONObject;
- import org.apache.http.HttpEntity;
- import org.apache.http.ParseException;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.entity.StringEntity;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.message.BasicHeader;
- import org.apache.http.protocol.HTTP;
- import org.apache.http.util.EntityUtils;
- import java.io.*;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLConnection;
- public class HTTPRequestUtils {
- /**
- * 发送post请求
- *
- * @param url 路径
- * @param json 参数(json类型)
- * @param encoding 编码格式
- * @return
- * @throws ParseException
- * @throws IOException
- */
- public static String send(String url, String json, String encoding) throws ParseException, IOException {
- String body = "";
- //创建httpclient对象
- CloseableHttpClient client = HttpClients.createDefault();
- //创建post方式请求对象
- HttpPost httpPost = new HttpPost(url);
- //装填参数
- StringEntity s = new StringEntity(json.toString(), "utf-8");
- s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
- //设置参数到请求对象中
- httpPost.setEntity(s);
- System.out.println("请求地址:" + url);
- System.out.println(json);
- httpPost.setHeader("Content-type", "application/json");
- httpPost.setHeader("-UserAgent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
- //执行请求操作,并拿到结果(同步阻塞)
- CloseableHttpResponse response = client.execute(httpPost);
- System.out.println(response);
- //获取结果实体
- HttpEntity entity = response.getEntity();
- System.out.println(entity);
- if (entity != null) {
- //按指定编码转换结果实体为String类型
- body = EntityUtils.toString(entity, encoding);
- }
- EntityUtils.consume(entity);
- //释放链接
- response.close();
- return body;
- }
- public static String getJsonData(JSONObject jsonParam, String urls) {
- StringBuffer sb = new StringBuffer();
- try {
- // 创建url资源
- URL url = new URL(urls);
- // 建立http连接
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- // 设置允许输出
- conn.setDoOutput(true);
- // 设置允许输入
- conn.setDoInput(true);
- // 设置不用缓存
- conn.setUseCaches(false);
- // 设置传递方式
- conn.setRequestMethod("POST");
- // 设置维持长连接
- conn.setRequestProperty("Connection", "Keep-Alive");
- // 设置文件字符集:
- conn.setRequestProperty("Charset", "UTF-8");
- // 转换为字节数组
- byte[] data = (jsonParam.toString()).getBytes();
- // 设置文件长度
- conn.setRequestProperty("Content-Length", String.valueOf(data.length));
- // 设置文件类型:
- conn.setRequestProperty("Content-Type", "application/json");
- // 开始连接请求
- conn.connect();
- OutputStream out = new DataOutputStream(conn.getOutputStream());
- // 写入请求的字符串
- out.write((jsonParam.toString()).getBytes());
- out.flush();
- out.close();
- System.out.println(conn.getResponseCode());
- // 请求返回的状态
- if (HttpURLConnection.HTTP_OK == conn.getResponseCode()) {
- System.out.println("连接成功");
- // 请求返回的数据
- InputStream in1 = conn.getInputStream();
- try {
- String readLine = new String();
- BufferedReader responseReader = new BufferedReader(new InputStreamReader(in1, "UTF-8"));
- while ((readLine = responseReader.readLine()) != null) {
- sb.append(readLine).append("\n");
- }
- responseReader.close();
- System.out.println(sb.toString());
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- } else {
- System.out.println("error++");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return sb.toString();
- }
- /**
- * 向指定 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("charsert", "utf-8");
- conn.setRequestProperty("Content-Type", "application/json");
- // conn.setRequestProperty("user-agent",
- // "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
- // 发送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()));
- 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;
- }
- }
|