这段时间接触了java.net ,在此记录下HttpURLConnection 的基本用法
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HttpPostUtil {
private static final Integer readTimeout = 30000; //30秒
private static final Integer connectTimeout = 30000; //30秒
private static final String sendEncoding = "UTF-8"; //发送时编码
private static final String receiveEncoding = "UTF-8"; //接受时编码
/**
* post提交
* @param url
* @param params
* @return
*/
public static String doPost(String url, Map<String, String> params){
DataOutputStream ds = null;
InputStreamReader isr = null;
BufferedReader br = null;
try{
URL url_ = new URL(url);
HttpURLConnection conn = (HttpURLConnection)url_.openConnection();
/** 基本参数设置 **/
conn.setConnectTimeout(connectTimeout);
conn.setReadTimeout(readTimeout);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
/** 设置报头信息,根据具体需求具体设置 **/
conn.setRequestProperty("encoding", sendEncoding);
/** 获取http输出流 **/
ds = new DataOutputStream(conn.getOutputStream());
ds.write(getParams(params).getBytes(sendEncoding));
ds.flush();
int code = conn.getResponseCode();
if(code == 200){
isr = new InputStreamReader(conn.getInputStream(), receiveEncoding);
br = new BufferedReader(isr);
String line = null;
StringBuffer sb = new StringBuffer();
while((line = br.readLine()) != null){
sb.append(line);
}
return sb.toString();
}else{
return "【服务器错误,code="+code+"】";
}
}catch(Exception e){
e.printStackTrace();
return e.getMessage();
}finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(isr != null){
try {
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(ds != null){
try {
ds.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 拼接参数
* eg : params1=value1¶ms2=value2
* @param params
* @return
*/
public static String getParams(Map<String, String> params){
if(params == null || params.isEmpty()){
return "";
}
StringBuffer sb = new StringBuffer();
Set<String> keys = params.keySet();
Iterator<String> it = keys.iterator();
while(it.hasNext()){
String key = it.next();
sb.append(key).append("=").append(params.get(key)).append("&");
}
return sb.substring(0, sb.length() - 1).toString();
}
public static void main(String[] args) {
Map<String, String> params = new HashMap<String, String>();
params.put("p1", "test");
params.put("p2", "中文");
System.out.println(HttpPostUtil.doPost("url", params));
}
}