网络工具类WebHttpUtils

来源:互联网 发布:cda数据分析师难嘛 编辑:程序博客网 时间:2024/06/03 16:19
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;


/**
 * 网络工具类。
 */
public class WebHttpUtils {


/**

* @since JDK 1.7
*/
public static String doPost(String httpUrl, String postBody) throws Exception {


return _doPost(httpUrl, null, postBody, "utf-8", "utf-8");
}


/**

* @since JDK 1.7
*/
public static String doGet(String httpUrl, Map headMap) throws Exception {


return _doGet(httpUrl, headMap, "utf-8", "utf-8");
}


/**
* _doGet:发送POSt请求. <br/>
*
* @param httpUrl
*            路径
* @param headMap
*            头部参数MAP
* @return
* @throws IOException
* @throws Exception
* @since JDK 1.7
*/
private static String _doPost(String httpUrl, Map headMap, String postBody, String charset, String charset_out)
throws Exception {


URL localURL = new URL(httpUrl);


URLConnection connection = localURL.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;


httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept-Charset", charset);
setHead(httpURLConnection, headMap);


OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
String tempLine = null;


StringBuffer resultBodyBuffer = new StringBuffer("");


try {
outputStream = httpURLConnection.getOutputStream();
outputStreamWriter = new OutputStreamWriter(outputStream);


outputStreamWriter.write(postBody);
outputStreamWriter.flush();
inputStream = httpURLConnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream, charset_out);
reader = new BufferedReader(inputStreamReader);


while ((tempLine = reader.readLine()) != null) {
resultBodyBuffer.append(tempLine);
}


} finally {


if (outputStreamWriter != null) {
outputStreamWriter.close();
}


if (outputStream != null) {
outputStream.close();
}


if (reader != null) {
reader.close();
}


if (inputStreamReader != null) {
inputStreamReader.close();
}


if (inputStream != null) {
inputStream.close();
}


}


return resultBodyBuffer.toString();


}


/**
* _doGet:发送GET请求. <br/>
*
* @param httpUrl
*            路径
* @param headMap
*            头部参数MAP
* @return
* @throws Exception
* @since JDK 1.7
*/
private static String _doGet(String httpUrl, Map headMap, String charset, String charset_out) throws Exception {
URL localURL = new URL(httpUrl);


URLConnection connection = localURL.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;


httpURLConnection.setRequestProperty("Accept-Charset", charset);
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpURLConnection.setRequestMethod("GET");
setHead(httpURLConnection, headMap);


// httpURLConnection.setConnectTimeout();
// httpURLConnection.setReadTimeout();


InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
StringBuffer resultBodyBuffer = new StringBuffer("");
String tempLine = null;
try {


inputStream = httpURLConnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream, charset_out);
reader = new BufferedReader(inputStreamReader);
while ((tempLine = reader.readLine()) != null) {
resultBodyBuffer.append(tempLine);
}


} finally {
if (reader != null) {
reader.close();
}
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (inputStream != null) {
inputStream.close();
}


}
return resultBodyBuffer.toString();
}


/**
* setHead:设置HEAD. <br/>
*
* @author gaochao
* @param httpURLConnection
*            链接
* @param headMap
*            head参数MAP
* @since JDK 1.7
*/
private static void setHead(HttpURLConnection httpURLConnection, Map headMap) {
if ((headMap == null) || (headMap.size() == 0)) {
return;
}
Iterator it = headMap.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String) headMap.get(key);
httpURLConnection.addRequestProperty(key, value);
}
}


/**
* getHttpUrl:doGet下拼接URL. <br/>
*
* @param serverUrl
*            URL
* @param textMap
*            BODY参数
* @param urlMap
*            URL参数
* @return
* @since JDK 1.7
*/
private static String jionHttpUrl(String serverUrl, Map textMap, Map urlMap, StringBuilder localStringBuilder) {
localStringBuilder.append(serverUrl);
if ((textMap == null) || (textMap.size() == 0) && (urlMap == null) || (urlMap.size() == 0)) {
return null;
}
localStringBuilder.append("?");
String resUrl = jionPara(urlMap, localStringBuilder);
if (resUrl != null) {
return resUrl;
}
String resText = jionPara(textMap, localStringBuilder);
if (resText != null) {
return resText;
}


if (localStringBuilder.length() > 0) {
localStringBuilder.deleteCharAt(localStringBuilder.length() - 1);
}
return null;
}


/**
* jionPara:拼接URL参数. <br/>
*
* @author gaochao
* @param paraMap
*            参数MAP
* @param localStringBuilder
* @since JDK 1.7
*/
@SuppressWarnings("rawtypes")
private static String jionPara(Map paraMap, StringBuilder localStringBuilder) {
try {
Iterator it = paraMap.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String) paraMap.get(key);
localStringBuilder.append(key);
localStringBuilder.append("=");
localStringBuilder.append(URLEncoder.encode(value, "UTF-8"));
localStringBuilder.append("&");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return e.getMessage();
}
return null;
}


}
0 0
原创粉丝点击