日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓使用 HTTP 协议访问网络

發布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓使用 HTTP 协议访问网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

10.2.1

使用

HttpURLConnection

1,首先需要獲取到 HttpURLConnection 的實例,一般只需 new 出一個 URL 對象,并傳入
目標的網絡地址,然后調用一下 openConnection()方法

2,我們可以設置一下 HTTP 請求所使用的方法。
常用的方法主要有兩個, GET 和 POST。 GET 表示希望從服務器那里獲取數據,而 POST 則
表示希望提交數據給服務器。

3,接下來就可以進行一些自由的定制了,比如設置連接超時、讀取超時的毫秒數,以及服
務器希望得到的一些消息頭等。

4,之后再調用 getInputStream()方法就可以獲取到服務器返回的輸入流了,剩下的任務就是
對輸入流進行讀取,

5.

最后可以調用 disconnect()方法將這個 HTTP 連接關閉掉,

?//?開啟線程來發起網絡請求new?Thread(new?Runnable()?{@Overridepublic?void?run()?{HttpURLConnection?connection?=?null;try?{URL?url?=?new?URL(" http://www.baidu.com ");connection?=?(HttpURLConnection)?url.openConnection();第一行代碼——Android400connection.setRequestMethod("GET");connection.setConnectTimeout(8000);connection.setReadTimeout(8000);InputStream?in?=?connection.getInputStream();//?下面對獲取到的輸入流進行讀取BufferedReader?reader?=?new?BufferedReader(newInputStreamReader(in));StringBuilder?response?=?new?StringBuilder();String?line;while?((line?=?reader.readLine())?!=?null)?{response.append(line);}Message?message?=?new?Message();message.what?=?SHOW_RESPONSE;//?將服務器返回的結果存放到Message中message.obj?=?response.toString();handler.sendMessage(message);}?catch?(Exception?e)?{e.printStackTrace();}?finally?{if?(connection?!=?null)?{connection.disconnect();}}}}).start();}

那么如果是想要提交數據給服務器應該怎么辦呢?其實也不復雜,只需要將 HTTP 請求
的方法改成 POST,并在獲取輸入流之前把要提交的數據寫出即可。注意每條數據都要以鍵
值對的形式存在,數據與數據之間用&符號隔開,比如說我們想要向服務器提交用戶名和密
碼,就可以這樣寫:

connection.setRequestMethod("POST");DataOutputStream?out?=?new?DataOutputStream(connection.getOutputStream());out.writeBytes("username=admin&password=123456");

10.2.2 使用 HttpClient
1,HttpClient 是一個接口,因此無法創建它的實例,通常情況下都會創
建一個 DefaultHttpClient 的實例,如下所示:
HttpClient httpClient = new DefaultHttpClient();

2,接下來如果想要發起一條 GET 請求,就可以創建一個 HttpGet 對象,并傳入目標的網絡
地址,然后調用 HttpClient 的 execute()方法即可

?

HttpGet httpGet = new HttpGet("http://www.baidu.com");
httpClient.execute(httpGet);

如果是發起一條 POST 請求會比 GET 稍微復雜一點,我們需要創建一個 HttpPost 對象,
并傳入目標的網絡地址,如下所示:
HttpPost httpPost = new HttpPost("http://www.baidu.com");
然后通過一個 NameValuePair 集合來存放待提交的參數,并將這個參數集合傳入到一個
UrlEncodedFormEntity 中,然后調用 HttpPost 的 setEntity()方法將構建好的 UrlEncodedFormEntity
傳入,如下所示:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", "admin"));
params.add(new BasicNameValuePair("password", "123456"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");
httpPost.setEntity(entity);

3,接下來的操作就和 HttpGet 一樣了,調用 HttpClient 的 execute()方法,并將 HttpPost 對
象傳入即可:
httpClient.execute(httpPost);

if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 請求和響應都成功了
}

4,
接下來在這個 if判斷的內部取出服務返回的具體內容,可以調用 getEntity()方法獲取到
一個 HttpEntity 實例,然后再用 EntityUtils.toString()這個靜態方法將 HttpEntity 轉換成字符串
即可,如下所示:
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity);

public?class?MainActivity?extends?Activity?implements?OnClickListener?{……@Overridepublic?void?onClick(View?v)?{if?(v.getId()?==?R.id.send_request)?{sendRequestWithHttpClient();}}private?void?sendRequestWithHttpClient()?{new?Thread(new?Runnable()?{@Overridepublic?void?run()?{try?{HttpClient?httpClient?=?new?DefaultHttpClient();HttpGet?httpGet?=?new?HttpGet("http://www.baidu.com");HttpResponse?httpResponse?=?httpClient.execute(httpGet);if?(httpResponse.getStatusLine().getStatusCode()?==?200)?{//? 請求和響應都成功了HttpEntity?entity?=?httpResponse.getEntity();第一行代碼 —— Android404String?response?=?EntityUtils.toString(entity,"utf-8");Message?message?=?new?Message();message.what?=?SHOW_RESPONSE;//? 將服務器返回的結果存放到 Message 中message.obj?=?response.toString();handler.sendMessage(message);}}?catch?(Exception?e)?{e.printStackTrace();}}}).start();}……}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://my.oschina.net/u/2480757/blog/517895

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的安卓使用 HTTP 协议访问网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。