URLConnection是抽象類,它有兩個直接子類別分別是HttpURLConnection和JarURLConnection。另一個重要的類別是URL,通常URL可以透過傳給建構子一個String類型的參數來產生一個指向特定位址的URL實例。
每個HttpURLConnection 實例都可用於產生單一請求,但是其他實例可以透明地共用連接到HTTP 伺服器的基礎網路。請求後在HttpURLConnection 的InputStream 或OutputStream 上呼叫close() 方法可以釋放與此實例關聯的網路資源,但對共享的持久連線沒有任何影響。如果在呼叫disconnect() 時持久連接空閒,則可能會關閉基礎套接字。
package com.newflypig.demo;/** * 使用jdk自帶的HttpURLConnection向URL發送POST請求並輸出響應結果* 參數使用流傳遞,並且硬編碼為字符串"name=XXX"的格式*/import java. io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;public class SendPostDemo { public static void main(String[] args) throws Exception{ String urlPath = new String("http://localhost:8080/Test1/HelloWorld") ; //String urlPath = new String("http://localhost:8080/Test1/HelloWorld?name=丁丁".getBytes("UTF-8")); String param="name="+URLEncoder.encode("丁丁","UTF-8 "); //建立連線網址 url=new URL(urlPath); HttpURLConnection httpConn=(HttpURLConnection)url.openConnection(); //設定參數httpConn.setDoOutput(true); //需要輸出httpConn.setDoInput(true); //需要輸入httpConn.setUseCaches(false); //不允許快取httpConn.setRequestMethod("POST"); //設定POST方式連接//設定請求屬性httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); httpConn.setRequestProperty("Connection", "Keep-Alive");// 維持長連接httpConn.setRequestProperty("Charset", "UTF-8"); //連接,也可以不用明文connect,使用下面的httpConn.getOutputStream()會自動connect httpConn. connect(); //建立輸入流,向指向的URL傳入參數DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream()); dos.writeBytes(param); dos.flush(); dos.close(); //取得回應狀態int resultCode=httpConn.getResponseCode(); if(HttpURLConnection.HTTP_OK==resultCode){ StringBuffer sb=new StringBuffer() ; String readLine=new String(); BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8")); while((readLine=responseReader.readLine())!=null){ sb.append(readLine).append("/n"); } responseReader.close(); System.out.println(sb.toString()); } }}
JAVA使用HttpURLConnection傳送POST資料是依賴OutputStream流的形式傳送
具體編碼過程中,參數是以字串「name=XXX」這種形式發送
以上內容就是本文的全部所述,希望本文介紹對大家有幫助。