generated from root/miduo_server
215 lines
7.5 KiB
Java
215 lines
7.5 KiB
Java
package com.ljsd.util;
|
||
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import org.apache.http.HttpEntity;
|
||
import org.apache.http.NameValuePair;
|
||
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||
import org.apache.http.client.methods.HttpPost;
|
||
import org.apache.http.entity.ContentType;
|
||
import org.apache.http.entity.StringEntity;
|
||
import org.apache.http.impl.client.CloseableHttpClient;
|
||
import org.apache.http.impl.client.DefaultHttpClient;
|
||
import org.apache.http.impl.client.HttpClients;
|
||
import org.apache.http.message.BasicNameValuePair;
|
||
import org.apache.http.util.EntityUtils;
|
||
|
||
import java.io.*;
|
||
import java.net.*;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
public class HttpUtils {
|
||
|
||
public static String doPost(String url, Map<String,String> parms) throws IOException {
|
||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||
HttpPost httpPost = new HttpPost(url);
|
||
List<NameValuePair> nvps =getFromMap(parms);
|
||
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
|
||
CloseableHttpResponse response2 = httpclient.execute(httpPost);
|
||
|
||
try {
|
||
HttpEntity entity = response2.getEntity();
|
||
return EntityUtils.toString(entity);
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
return null;
|
||
} finally {
|
||
response2.close();
|
||
}
|
||
}
|
||
|
||
public static String doPost2(String url, String json) throws IOException {
|
||
PrintWriter out = null;
|
||
BufferedReader in = null;
|
||
String result = "";
|
||
try {
|
||
URL realUrl = new URL(url);
|
||
// 打开和URL之间的连接
|
||
URLConnection conn = realUrl.openConnection();
|
||
// 设置通用的请求属性
|
||
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||
// 发送POST请求必须设置如下两行
|
||
conn.setDoOutput(true);
|
||
conn.setDoInput(true);
|
||
// 获取URLConnection对象对应的输出流
|
||
out = new PrintWriter(conn.getOutputStream());
|
||
// 发送请求参数
|
||
out.print(json);
|
||
// 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;
|
||
}
|
||
|
||
public static List<NameValuePair> getFromMap(Map<String,String> parms){
|
||
List<NameValuePair> nvps = new ArrayList<NameValuePair>(parms.size());
|
||
for(Map.Entry<String,String> item : parms.entrySet()){
|
||
nvps.add(new BasicNameValuePair(item.getKey(), item.getValue()));
|
||
}
|
||
return nvps;
|
||
}
|
||
|
||
|
||
public static String httpGetRequest(String httpUrl){
|
||
HttpURLConnection connection = null;
|
||
InputStream is = null;
|
||
BufferedReader br = null;
|
||
String result = null;// 返回结果字符串
|
||
try {
|
||
// 创建远程url连接对象
|
||
URL url = new URL(httpUrl);
|
||
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
|
||
connection = (HttpURLConnection) url.openConnection();
|
||
// 设置连接方式:get
|
||
connection.setRequestMethod("GET");
|
||
// 设置连接主机服务器的超时时间:15000毫秒
|
||
connection.setConnectTimeout(15000);
|
||
// 设置读取远程返回的数据时间:60000毫秒
|
||
connection.setReadTimeout(60000);
|
||
// 发送请求
|
||
connection.connect();
|
||
// 通过connection连接,获取输入流
|
||
if (connection.getResponseCode() == 200) {
|
||
is = connection.getInputStream();
|
||
// 封装输入流is,并指定字符集
|
||
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||
// 存放数据
|
||
StringBuffer sbf = new StringBuffer();
|
||
String temp = null;
|
||
while ((temp = br.readLine()) != null) {
|
||
sbf.append(temp);
|
||
sbf.append("\r\n");
|
||
}
|
||
result = sbf.toString();
|
||
}
|
||
} catch (MalformedURLException e) {
|
||
e.printStackTrace();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
} finally {
|
||
// 关闭资源
|
||
if (null != br) {
|
||
try {
|
||
br.close();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
if (null != is) {
|
||
try {
|
||
is.close();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
connection.disconnect();// 关闭远程连接
|
||
}
|
||
return result;
|
||
}
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 向指定 URL 发送POST方法的请求
|
||
*
|
||
* @param url
|
||
* 发送请求的 URL
|
||
* @param param
|
||
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
|
||
* @return 所代表远程资源的响应结果
|
||
*/
|
||
public static String sendPost(String url, JSONObject 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)");
|
||
// 发送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;
|
||
}
|
||
|
||
}
|