Android網絡開發之HttpURLConnection


http是一個可靠的傳輸,建立在TCP/IP連接之上,缺省端口是80,其他端口號也可以用。Android可以用HttpURLConnection或HttpClient接口來開發http程序。

http通信使用最多的是Get和Post。Post和Get的不同之處在於Get的參數放在URL字串中,而Post的參數放在http請求數據中。

HttpURLConnection繼承自URLConnection,都是抽象類,無法直接實例化對象。其對象主要通過URL的openConnection方法獲得。

openConnection方法只創建URLConnection或HttpURLConnection實例,但是不進行真正的連接操作,並且每次openConnection都創建一個新的實例。

在連接之前,可以設置一些屬性,比如超時時間等。

HttpURLConnection默認使用Get方法,如果要使用Post方法,則需要使用setRequestMethod方法。

// 示例代碼:通過Post方式發送請求

URL url = new URL(“http://www.google.com”);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// 設置輸入/出流

conn.setDoOutput(true);

conn.setDoInput(true);

// 設置請求方式為Post

conn.setRequestMethod(“POST”);

// Post請求不能使用緩存

conn.setUseCaches(false);

conn.setInstanceFollowRedirects(true);

// 設置Content-type

conn.setRequestProperty(“Content-Type”,“application/x-www-form-urlencoded”);

// 在調用getOutputStream時會隱式調用conn.connect()

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

String content = “name=” + URLEncoder.encode(“Jake”,“gb2312”);

dos.writeBytes(content);

dos.flush();

dos.close();

// 連接完成之后可以關閉這個連接

conn.disconnect();

 

// 示例代碼:讀取網頁上的內容

InputStreamReader isr = new InputStreamReader(conn.getInputStream());

BufferedReader br = new BufferedReader(isr);

String line = null;

while(((line = br.readLine()) != null)) { … }

// 關閉連接

isr.close();

conn.disconnect();

 

// 示例代碼:獲取網絡上的一張圖片

conn.setDoInput(true);

conn.connect(); // 這條語句要不(待定)

InputStream is = conn.getInputStream();

// 將InputStream數據轉換成Bitmap

Bitmap bitmap = BitmapFactory.decodeStream(is);

// 關閉數據流

is.close();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM