java發送GET/POST請求工具類
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.Charset; import java.util.Map; import java.util.Vector;/**
Java HTTP請求對象 發送GET/POST請求工具類 */ public class HttpRequester {
private String defaultContentEncoding;
public HttpRequester() {
this.defaultContentEncoding = Charset.defaultCharset().name();
}
/**
- 發送GET請求
- @param urlString URL地址
- @return 響應對象
@throws IOException */ public HttpRespons sendGet(String urlString) throws IOException { return this.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 this.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 this.send(urlString, "GET", params, propertys); }
/**
- 發送POST請求
- @param urlString URL地址
- @return 響應對象
@throws IOException */ public HttpRespons sendPost(String urlString) throws IOException { return this.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 this.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 this.send(urlString, "POST", params, propertys); }
/**
- 發送HTTP請求
- @param urlString 地址
- @param method get/post
- @param parameters 添加由鍵值對指定的請求參數
- @param propertys 添加由鍵值對指定的一般請求屬性
- @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.setRequestMethod(method); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false);
if (propertys != null)
for (String key : propertys.keySet()) { urlConnection.addRequestProperty(key, propertys.get(key)); }
if (method.equalsIgnoreCase("POST") && parameters != null) {
StringBuffer param = new StringBuffer(); for (String key : parameters.keySet()) { param.append("&"); param.append(key).append("=").append(parameters.get(key)); } urlConnection.getOutputStream().write(param.toString().getBytes()); urlConnection.getOutputStream().flush(); urlConnection.getOutputStream().close();
} return this.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 = this.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) {
throw e;
} finally {
if (urlConnection != null) urlConnection.disconnect();
} }
/**
默認的響應字符集 */ public String getDefaultContentEncoding() { return this.defaultContentEncoding; }
/**
- 設置默認的響應字符集
*/
public void setDefaultContentEncoding(String defaultContentEncoding) {
this.defaultContentEncoding = defaultContentEncoding;
}
}</pre>