一、步驟分爲
1.通過String類型的URL地址或者是String protocol, String host, int port, String file各字符串值得到URL對象
2、通過URL對象得到HTTPURLConnection
3、通過httpURLConnection對象得到請求的返回值
二、得到URL的三種方式(推薦使用第一種)
1、public URL(String url)
2、public URL(String protocol, String host, int port, String file)//可自定義請求的端口
3、public URL(String protocol, String host, String file)//默認端口爲80
三、得到URLConnection對象
URLConnection urlConnection=url.openConnection();
if(urlConnection instanceof HttpURLConnection)
httpURLConnection=(HttpURLConnection) urlConnection;
四、 通過URLConnection對象得到結果的輸入流
InputStream is=urlConnection.getInputStream();
DEMO如下:
I.封裝類
package url;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class URLUtils {
/*
* 獲取URL通過URL路徑
*/
public static URL getURL(String strUrl)
{
try {
URL url=new URL(strUrl);
return url;
} catch (MalformedURLException e) {
System.out.println("通過地址得到URL出現異常...");
e.printStackTrace();
return null;
}
}
/*
* 通過URL對象獲取Connection鏈接
*/
public static URLConnection getConnectionByURL(URL url,String params)
{
HttpURLConnection httpURLConnection=null;
try {
URLConnection urlConnection=url.openConnection();
if(urlConnection instanceof HttpURLConnection)
httpURLConnection=(HttpURLConnection) urlConnection;
/*
* 設置請求的方式和一些其他的參數
*/
httpURLConnection.setDoInput(true); //需要輸入
httpURLConnection.setUseCaches(false); //不允許緩存
httpURLConnection.setRequestMethod("POST"); //設置POST方式連接
//設置請求屬性
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpURLConnection.setRequestProperty("Connection", "Keep-Alive");// 維持長連接
httpURLConnection.setRequestProperty("Charset", "UTF-8");
httpURLConnection.setDoOutput(true);//允許傳入參數
byte[] paramByte=params.getBytes();
//參數值不要第一個的 ? 號值
httpURLConnection.getOutputStream().write(paramByte);//傳入參數的byte類型
return httpURLConnection;
} catch (IOException e) {
System.out.println("獲取連接異常...");
e.printStackTrace();
return null;
}
}
/*
* 通過URLConnection 對象得到請求的返回值
*/
public static String getResponseValue(URLConnection urlConnection)
{
String result="";
try {
InputStream is=urlConnection.getInputStream();
BufferedReader in = new BufferedReader(
new InputStreamReader(is));
String current;
while((current = in.readLine()) != null)
{
result += current;
}
return result;
} catch (IOException e) {
System.out.println("請求結果讀取異常...");
e.printStackTrace();
return result;
}
}
/*
* 將Map類型的參數值轉爲String類型
*/
public static String mapToString(Map<String,Object> param)
{
StringBuffer sb=new StringBuffer("");
if(param==null||param.size()==0)
return sb.toString();
else
{
int index=1;
Set<String> keySet=param.keySet();
Iterator<String> keys=keySet.iterator();
while(keys.hasNext())
{
String key=keys.next();
String value=(String) param.get(key);
if(index==1)
{
sb.append(key+"="+value);
}else
{
sb.append("&"+key+"="+value);
}
index+=1;
}
return sb.toString();
}
}
}
II.測試類
package url;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
public class URLMain {
public static void main(String[] args) {
String url="你需要請求的URL連接";
URL obj=URLUtils.getURL(url);
Map<String,Object> map=new HashMap<String,Object>();
//可定義多個參數值 以鍵值對的方式放入map中 也可使用其他的方式
map.put("websiteNo", "ffb6ccf64b");
String params=URLUtils.mapToString(map);
URLConnection urlConnection=URLUtils.getConnectionByURL(obj,params);
String result=URLUtils.getResponseValue(urlConnection);
System.out.println("請求結果: "+result);
}
}
注.若是以GET的方式請求,則可以將參數直接拼接在URL地址後面,修改下面代碼httpURLConnection.setRequestMethod("GET"); //設置GET方式連接