下面代码为本人项目实际应用代码工具类:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
/**
*
*
*/
public class HttpUtils {
private static String CHARSET="UTF-8"; //字符集
/***
* 生成提交参数
* @param paraMap
* @return
*/
private static String buildParam(Map paraMap)
{
if(null==paraMap||paraMap.size()==0)
{
return "";
}
try
{
StringBuffer buildStr=new StringBuffer();
for(Object obj:paraMap.keySet())
{
buildStr.append(obj.toString()+"="+URLEncoder.encode(paraMap.get(obj.toString()).toString(),CHARSET));// 采用encode方式避免入参中文乱码
buildStr.append("&");
}
String temp=buildStr.toString();
return temp.substring(0,temp.length()-1);
}
catch(Exception ex)
{
ex.printStackTrace();
return "encode-error"; //表示UTF编码失败
}
}
/**
*
* 简化post入参操作
* @param url
* @param paraMap
* @return
* @throws Exception
*/
public static String postUrl(String url,Map paraMap)throws Exception
{
return postUrl(url,paraMap,"");
}
/**提交url参数
* dmq 20140710
* @param url
* @param mapMap
* @param session
* @return
*/
public static String postUrl(String url,Map paraMap,String session)throws Exception
{
URL reqUrl=new URL(url);
HttpURLConnection conn = (HttpURLConnection)reqUrl.openConnection();
conn.setDoOutput(true); //因为是post请求,参数要放在http正文内,为true则表示参数放正文内
conn.setDoInput(true);//设置是否通conn读入,默认情况是true
conn.setUseCaches(false);//Post不能使用缓存
conn.setRequestMethod("POST");//post方法
//conn.setRequestProperty("charset", CHARSET);
conn.addRequestProperty("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
//设置超时时间
conn.setConnectTimeout(50000);
conn.setReadTimeout(50000);
//将请求参数提交
OutputStream output = conn.getOutputStream();
String content=buildParam(paraMap);
//dmq 20150119 如果编码失败,则直接抛出异常
if("encode-error".equals(content))
{
conn.disconnect();
throw new Exception("[dgzq]入参编码失败");
}
output.write(content.getBytes());
output.flush();
output.close();
// 获取页面返回内容
//注意,实际发送请求的代码段在getInputStream()中,并且本次请求已经结束
BufferedReader reader = new BufferedReader(new InputStreamReader(conn
.getInputStream(),CHARSET));
StringBuffer repMsg=new StringBuffer("");;
try
{
String line="";
while ((line = reader.readLine()) != null) {
repMsg.append(line);
}
}
finally
{
reader.close();
}
return repMsg.toString();
}
}