以下代碼是Java實現Http的Post、Get、代理訪問請求,可以參考壹下
package?com.snowfigure.kits.net;import?java.io.BufferedReader;?
import?java.io.IOException;
import?java.io.InputStream;?
import?java.io.InputStreamReader;?
import?java.io.OutputStreamWriter;
import?java.io.UnsupportedEncodingException;?
import?java.net.HttpURLConnection;?
import?java.net.InetSocketAddress;
import?java.net.Proxy;
import?java.net.URL;?
import?java.net.URLConnection;
import?java.util.List;
import?java.util.Map;
/**?
*?Http請求工具類? *?@author?snowfigure? *?@since?2014-8-24?13:30:56? *?@version?v1.0.1? */public?class?HttpRequestUtil?{
static?boolean?proxySet?=?false;
static?String?proxyHost?=?"127.0.0.1";
static?int?proxyPort?=?8087;
/**?
*?編碼? *?@param?source? *?@return? */?public?static?String?urlEncode(String?source,String?encode)?{?
String?result?=?source;?
try?{?
result?=?java.net.URLEncoder.encode(source,encode);?
}?catch?(UnsupportedEncodingException?e)?{?
e.printStackTrace();?
return?"0";?
}?
return?result;?
}
public?static?String?urlEncodeGBK(String?source)?{?
String?result?=?source;?
try?{?
result?=?java.net.URLEncoder.encode(source,"GBK");?
}?catch?(UnsupportedEncodingException?e)?{?
e.printStackTrace();?
return?"0";?
}?
return?result;?
}
/**?
*?發起patible;?MSIE?6.0;?Windows?NT?5.1;SV1)");//?建立實際的連接
connection.connect();
//?獲取所有響應頭字段
Map<String,?List<String>>?map?=?connection.getHeaderFields();
//?遍歷所有的響應頭字段
for?(String?key?:?map.keySet())?{
System.out.println(key?+?"--->"?+?map.get(key));
}
//?定義?BufferedReader輸入流來讀取URL的響應
in?=?new?BufferedReader(new?InputStreamReader(
connection.getInputStream()));
String?line;
while?((line?=?in.readLine())?!=?null)?{
result?+=?line;
}
}?catch?(Exception?e)?{
System.out.println("發送GET請求出現異常!"?+?e);
e.printStackTrace();
}
//?使用finally塊來關閉輸入流
finally?{
try?{
if?(in?!=?null)?{
in.close();
}
}?catch?(Exception?e2)?{
e2.printStackTrace();
}
}
return?result;
}
/**
*?向指定?URL?發送POST方法的請求 *? *?@param?url *發送請求的?URL *?@param?param *請求參數,請求參數應該是?name1=value1&name2=value2?的形式。 *?@param?isproxy *是否使用代理模式 *?@return?所代表遠程資源的響應結果 */public?static?String?sendPost(String?url,?String?param,boolean?isproxy)?{
OutputStreamWriter?out?=?null;
BufferedReader?in?=?null;
String?result?=?"";
try?{
URL?realUrl?=?new?URL(url);
HttpURLConnection?conn?=?null;
if(isproxy){//使用代理模式
@SuppressWarnings("static-access")
Proxy?proxy?=?new?Proxy(Proxy.Type.DIRECT.HTTP,?new?InetSocketAddress(proxyHost,?proxyPort));
conn?=?(HttpURLConnection)?realUrl.openConnection(proxy);
}else{
conn?=?(HttpURLConnection)?realUrl.openConnection();
}
//?打開和URL之間的連接
//?發送POST請求必須設置如下兩行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");//?POST方法
//?設置通用的請求屬性
conn.setRequestProperty("accept",?"*/*");
conn.setRequestProperty("connection",?"Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.1;SV1)");
conn.setRequestProperty("Content-Type",?"application/x-www-form-urlencoded");
conn.connect();
//?獲取URLConnection對象對應的輸出流
out?=?new?OutputStreamWriter(conn.getOutputStream(),?"UTF-8");
//?發送請求參數
out.write(param);
//?flush輸出流的緩沖
out.flush();
//?定義BufferedReader輸入流來讀取URL的響應
in?=?new?BufferedReader(
new?InputStreamReader(conn.getInputStream()));
String?line;
while?((line?=?in.readLine())?!=?null)?{
result?+=?line;
}
}?catch?(Exception?e)?{
System.out.println("發送?POST?請求出現異常!"+e);
e.printStackTrace();
}
//使用finally塊來關閉輸出流、輸入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException?ex){
ex.printStackTrace();
}
}
return?result;
}
public?static?void?main(String[]?args)?{
//demo:代理訪問
String?url?=?"";
String?sr=HttpRequestUtil.sendPost(url,para,true);
System.out.println(sr);
}
}