| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- package cn.com.lzt.common.util;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.nio.charset.Charset;
- import java.util.Map;
- import java.util.Vector;
- /**
- * 发送Http请求
- *
- * @author 刘鹏
- *
- */
- public class HttpRequester {
- private String defaultContentEncoding;
- private int timeOut;
- public HttpRequester() {
- defaultContentEncoding = Charset.defaultCharset().name();
- timeOut = 5;
- }
- /**
- * 发送GET请求
- *
- * @param urlString
- * URL地址
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendGet(String urlString) throws IOException {
- return send(urlString, "GET", null, null);
- }
- /**
- * 发送GET请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendGet(String urlString, Map<String, String> params)
- throws IOException {
- return send(urlString, "GET", params, null);
- }
- /**
- * 发送GET请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @param propertys
- * 请求属性
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendGet(String urlString, Map<String, String> params,
- Map<String, String> propertys) throws IOException {
- return send(urlString, "GET", params, propertys);
- }
- /**
- * 发送POST请求
- *
- * @param urlString
- * URL地址
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendPost(String urlString) throws IOException {
- return send(urlString, "POST", null, null);
- }
- /**
- * 发送POST请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendPost(String urlString, Map<String, String> params)
- throws IOException {
- return send(urlString, "POST", params, null);
- }
- /**
- * 发送POST请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @param propertys
- * 请求属性
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendPost(String urlString, Map<String, String> params,
- Map<String, String> propertys) throws IOException {
- return send(urlString, "POST", params, propertys);
- }
- public HttpRespons sendPost2SCF(String urlString, String parameters)
- throws IOException {
- HttpURLConnection urlConnection = null;
- URL url = new URL(urlString);
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setConnectTimeout(timeOut);
- urlConnection.setRequestMethod("POST");
- urlConnection.setDoOutput(true);
- urlConnection.setDoInput(true);
- urlConnection.setUseCaches(false);
- urlConnection.setRequestProperty("Content-Type", "text/xml");
- urlConnection.getOutputStream().write(parameters.getBytes());
- urlConnection.getOutputStream().flush();
- urlConnection.getOutputStream().close();
- return makeContent(urlString, urlConnection);
- }
- public HttpRespons sendPost2Spring(String urlString, String parameters)
- throws IOException {
- HttpURLConnection urlConnection = null;
- URL url = new URL(urlString);
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setConnectTimeout(timeOut);
- urlConnection.setRequestMethod("POST");
- urlConnection.setDoOutput(true);
- urlConnection.setDoInput(true);
- urlConnection.setUseCaches(false);
- urlConnection.setRequestProperty("Content-Type",
- "'application/json;charset=UTF-8");
- urlConnection.getOutputStream().write(parameters.getBytes());
- urlConnection.getOutputStream().flush();
- urlConnection.getOutputStream().close();
- return makeContent(urlString, urlConnection);
- }
- /**
- * 发送HTTP请求
- *
- * @param urlString
- * @return 响映对象
- * @throws IOException
- */
- private HttpRespons send(String urlString, String method,
- Map<String, String> parameters, Map<String, String> propertys)
- throws IOException {
- HttpURLConnection urlConnection = null;
- if (method.equalsIgnoreCase("GET") && parameters != null) {
- StringBuffer param = new StringBuffer();
- int i = 0;
- for (String key : parameters.keySet()) {
- if (i == 0) {
- param.append("?");
- } else {
- param.append("&");
- }
- param.append(key).append("=").append(parameters.get(key));
- i++;
- }
- urlString += param;
- }
- URL url = new URL(urlString);
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setConnectTimeout(timeOut);
- urlConnection.setRequestMethod(method);
- urlConnection.setDoOutput(true);
- urlConnection.setDoInput(true);
- urlConnection.setUseCaches(false);
- urlConnection.setRequestProperty("Content-Type",
- "text/plain;charset=UTF-8");
- if (propertys != null) {
- for (String key : propertys.keySet()) {
- urlConnection.addRequestProperty(key, propertys.get(key));
- }
- }
- if (method.equalsIgnoreCase("POST") && parameters != null) {
- // urlConnection.setRequestProperty("Content-Type", "text/xml");
- StringBuffer param = new StringBuffer();
- for (String key : parameters.keySet()) {
- // param.append(parameters.get(key));
- param.append("&");
- param.append(key).append("=").append(parameters.get(key));
- }
- urlConnection.getOutputStream().write(param.toString().getBytes());
- urlConnection.getOutputStream().flush();
- urlConnection.getOutputStream().close();
- }
- return makeContent(urlString, urlConnection);
- }
- /**
- * 得到响应对象
- *
- * @param urlConnection
- * @return 响应对象
- * @throws IOException
- */
- private HttpRespons makeContent(String urlString,
- HttpURLConnection urlConnection) throws IOException {
- HttpRespons httpResponser = new HttpRespons();
- try {
- InputStream in = urlConnection.getInputStream();
- BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(in));
- httpResponser.contentCollection = new Vector<String>();
- StringBuffer temp = new StringBuffer();
- String line = bufferedReader.readLine();
- while (line != null) {
- httpResponser.contentCollection.add(line);
- temp.append(line).append("\r\n");
- line = bufferedReader.readLine();
- }
- bufferedReader.close();
- String ecod = urlConnection.getContentEncoding();
- if (ecod == null) {
- ecod = defaultContentEncoding;
- }
- httpResponser.urlString = urlString;
- httpResponser.defaultPort = urlConnection.getURL().getDefaultPort();
- httpResponser.file = urlConnection.getURL().getFile();
- httpResponser.host = urlConnection.getURL().getHost();
- httpResponser.path = urlConnection.getURL().getPath();
- httpResponser.port = urlConnection.getURL().getPort();
- httpResponser.protocol = urlConnection.getURL().getProtocol();
- httpResponser.query = urlConnection.getURL().getQuery();
- httpResponser.ref = urlConnection.getURL().getRef();
- httpResponser.userInfo = urlConnection.getURL().getUserInfo();
- httpResponser.content = new String(temp.toString().getBytes(), ecod);
- httpResponser.contentEncoding = ecod;
- httpResponser.code = urlConnection.getResponseCode();
- httpResponser.message = urlConnection.getResponseMessage();
- httpResponser.contentType = urlConnection.getContentType();
- httpResponser.method = urlConnection.getRequestMethod();
- httpResponser.connectTimeout = urlConnection.getConnectTimeout();
- httpResponser.readTimeout = urlConnection.getReadTimeout();
- return httpResponser;
- } catch (IOException e) {
- System.out.print(e.getMessage());
- throw e;
- } finally {
- if (urlConnection != null) {
- urlConnection.disconnect();
- }
- }
- }
- /**
- * 发送HttpPost请求
- *
- * @param strURL
- * 服务地址
- * @param params
- * json字符串,例如: "{ \"id\":\"12345\" }" ;其中属性名必须带双引号<br/>
- * @return 成功:返回json字符串<br/>
- */
- public static HttpRespons post(String strURL, String params) throws Exception{
- HttpRespons httpResponser = new HttpRespons();
- URL url = new URL(strURL);// 创建连接
- HttpURLConnection connection = (HttpURLConnection) url
- .openConnection();
- connection.setDoOutput(true);
- connection.setDoInput(true);
- connection.setUseCaches(false);
- connection.setInstanceFollowRedirects(true);
- connection.setRequestMethod("POST"); // 设置请求方式
- connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
- connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
- connection.connect();
- OutputStreamWriter out = new OutputStreamWriter(
- connection.getOutputStream(), "UTF-8"); // utf-8编码
- out.append(params);
- out.flush();
- out.close();
- // 读取响应
- InputStream is = connection.getInputStream();
- BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(is));
- httpResponser.contentCollection = new Vector<String>();
- StringBuffer temp = new StringBuffer();
- String line = bufferedReader.readLine();
- while (line != null) {
- httpResponser.contentCollection.add(line);
- temp.append(line).append("\r\n");
- line = bufferedReader.readLine();
- }
- bufferedReader.close();
- httpResponser.urlString = strURL;
- httpResponser.defaultPort = connection.getURL().getDefaultPort();
- httpResponser.file = connection.getURL().getFile();
- httpResponser.host = connection.getURL().getHost();
- httpResponser.path = connection.getURL().getPath();
- httpResponser.port = connection.getURL().getPort();
- httpResponser.protocol = connection.getURL().getProtocol();
- httpResponser.query = connection.getURL().getQuery();
- httpResponser.ref = connection.getURL().getRef();
- httpResponser.userInfo = connection.getURL().getUserInfo();
- httpResponser.content = new String(temp.toString().getBytes(),
- "UTF-8");
- httpResponser.contentEncoding = "UTF-8";
- httpResponser.code = connection.getResponseCode();
- httpResponser.message = connection.getResponseMessage();
- httpResponser.contentType = connection.getContentType();
- httpResponser.method = connection.getRequestMethod();
- httpResponser.connectTimeout = connection.getConnectTimeout();
- httpResponser.readTimeout = connection.getReadTimeout();
- return httpResponser;
- }
- /**
- * 默认的响应字符集
- */
- public String getDefaultContentEncoding() {
- return defaultContentEncoding;
- }
- /**
- * 设置默认的响应字符集
- */
- public void setDefaultContentEncoding(String defaultContentEncoding) {
- this.defaultContentEncoding = defaultContentEncoding;
- }
- /**
- * 默认的连接超时秒数
- */
- public int getTimeOut() {
- return timeOut;
- }
- /**
- * 设置默认的超时秒数
- */
- public void setTimeOut(int timeOut) {
- this.timeOut = timeOut;
- }
- }
|