在學習URL時,想使用URL訪問Servlet。
知識介紹:在向web服務器發送信息時,通常有兩個命令會被用到:GET和POST。
GET:參數附在URL結尾處。注:GET命令簡單但是有侷限性,因爲大多數瀏覽器都對GET請求中可以包含的字符數作了限制。
POST:不需要在URL中添加任何參數,而是從URLConnection中獲取輸出流。
無論是GET還是POST都要進行URL編碼。
URL編碼規則:
1.保留字符A-z、a-z、0-9以及 . - * _(四個)。
2.用+字符替換所以的空格。
3.將其他所有字符編碼爲UTF-8,並將每個字節都編碼爲%後面緊跟一個兩位的十六進制數字。
如http://hi.baidu.com/%BE%B2%D0%C4%C0%CF%C8%CB/creat/blog/
使用方法:URLEncoder.encode(url,"UTF-8");
舉例:
String param = "S. Math";
param = URLEncoder.encode(param,"UTF-8");
//進行URL編碼,將空格編碼爲+,即S.+Math
URL url = new URL("http://10.138.6.156:8001/Service/TestServlet?param="+param);
HttpURLConnection hc = (HttpURLConnection) url.openConnection();
hc.setUseCaches(false);
hc.connect();
InputStream input = hc.getInputStream();
//此時只進行輸入流獲取,沒有輸出流的話是GET發送方式。
如果是如下情況:
URL url = new URL("http://10.138.6.156:8001/Service/TestServlet“);
HttpURLConnection hc = (HttpURLConnection) url.openConnection();
hc.setDoOutput(true);
hc.setUseCaches(false);
hc.connect();
OutputStream outStrm = hc.getOutputStream();
outStrm.write("hello".getBytes()); //隨便發送一個,該行也可以不寫。
InputStream input = hc.getInputStream();
//此時有輸出流則使用POST發送方式。
注:只有getinputStream()函數纔有發送發送http請求的能力,所以必須要加上即使什麼事也不做。