Android網(wǎng)絡(luò)通信概述

網(wǎng)絡(luò)通信在App的使用中占據(jù)重要地位,要實(shí)現(xiàn)網(wǎng)絡(luò)通信,從宏觀上分為兩種方式血淌,即:調(diào)用原生類和使用第三方框架顽馋。

調(diào)用原生類

Android中通過原生類進(jìn)行網(wǎng)絡(luò)通信時谓厘,根據(jù)業(yè)務(wù)場景的不同,主要分為兩種方式寸谜,分別為HTTP網(wǎng)絡(luò)請求和Socket網(wǎng)絡(luò)請求竟稳,如圖所示:


一. Http通信

在Android中發(fā)送Http網(wǎng)絡(luò)請求一般有三種方式,分別為HttpURLConnection熊痴、HttpClient和AndroidHttpClient:

1. HttpURLConnection

繼承自URLConnection他爸,是 java.net.* 提供的與網(wǎng)絡(luò)操作相關(guān)的標(biāo)準(zhǔn)Java接口,可用于指定URL并發(fā)送GET請求愁拭、POST請求讲逛。

HttpURLConnection connection = null;
try {
      URL url = new URL("http://www.baidu.com");
      connection = (HttpURLConnection) url.openConnection();
      connection.setRequestMethod("GET");
      connection.setRequestProperty("Charset", "UTF-8");
      connection.setRequestProperty("Content-Type", "text/html;charset=UTF-8");
      connection.connect();
      if (connection.getResponseCode() == 200) {
             InputStream is = connection.getInputStream();
             //do something
      }
} catch (IOException e) {
      e.printStackTrace();
} finally {
      if (null != connection) {
             connection.disconnect();
      }
}
2. HttpClient

Apache提供的Http網(wǎng)絡(luò)訪問接口,也可以完成Http的GET請求和POST請求岭埠,一開始被引入到AndroidAPI中盏混,但在Android在6.0后刪除了該類庫,如果仍然想要使用惜论,需要在build.gradle文件中進(jìn)行配置许赃,配置如下:

android {
    useLibrary 'org.apache.http.legacy'
}

代碼如下:

try {
      HttpGet httpGet = new HttpGet("http://www.12306.cn/mormhweb/");
      HttpClient httpClient = new DefaultHttpClient();
      HttpResponse httpResponse = httpClient.execute(httpGet);
      if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            String resultData = EntityUtils.toString(httpResponse.getEntity(), "utf-8");
            //do something
       }
} catch (Exception e) {
       e.printStackTrace();
}
3.AndroidHttpClient

Android.net.*提供的網(wǎng)絡(luò)接口,繼承自HttpClient常常進(jìn)行Android特有的網(wǎng)絡(luò)編程馆类,使用較少混聊。

二. Socket通信

在Android中同樣支持Socket通信,是網(wǎng)絡(luò)通信過程中端點(diǎn)的抽象表示乾巧,應(yīng)用程序與服務(wù)器通信可以采用兩種模式:TCP可靠通信和UDP不可靠通信句喜。

使用第三方框架

在網(wǎng)絡(luò)通信過程中,直接使用自帶的原生類雖然靈活性比較高沟于,可以根據(jù)業(yè)務(wù)需求進(jìn)行多種不同配置咳胃,但在實(shí)際使用中各種功能都需要用戶自己去封裝定義,因此使用第三方框架就變成了一個很好的選擇旷太,常用的第三方框架如下:

okhttp和volley的底層是HttpURLConnection展懈;retrofit是對okhttp的包裝销睁,其底層也是HttpURLConnection;android-async-http和xUtils其底層是HttpClient存崖;等其他的第三方庫冻记,通過分析可以得到結(jié)論,第三方庫都是對原生類的功能的封裝以及擴(kuò)展来惧。

一. OkHttp通信

代碼如下:

OkHttpClient client = null;
Response response = null;
try {
      client = new OkHttpClient.Builder()
                  .connectTimeout(10000, TimeUnit.MILLISECONDS)
                  .build;
      Request request = new Request.Builder()
                  .url(new Url("www.xxx.com"))
                  .build();
     reponse = client.newCall(request).execute();
      if(response.isSuccessful()){
             //do something
      } else {
            //do something
      }
} catch(Exception e) {
      //do something
} finally {
      if (response != null) {
             response.close();
      }
      if (client != null) {
            client.dispatcher().executorService().shutdown();
            client.connectionPool().evictAll();
      }
}

持續(xù)更新ing...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載冗栗,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者违寞。
  • 序言:七十年代末贞瞒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趁曼,更是在濱河造成了極大的恐慌军浆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挡闰,死亡現(xiàn)場離奇詭異乒融,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)摄悯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門赞季,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奢驯,你說我怎么就攤上這事申钩。” “怎么了瘪阁?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵撒遣,是天一觀的道長。 經(jīng)常有香客問我管跺,道長义黎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任豁跑,我火速辦了婚禮廉涕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘艇拍。我一直安慰自己狐蜕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布卸夕。 她就那樣靜靜地躺著层释,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娇哆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機(jī)與錄音碍讨,去河邊找鬼治力。 笑死,一個胖子當(dāng)著我的面吹牛勃黍,可吹牛的內(nèi)容都是我干的宵统。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼覆获,長吁一口氣:“原來是場噩夢啊……” “哼马澈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弄息,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤痊班,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后九妈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘾婿,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洗搂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凝果。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡睦尽,死狀恐怖器净,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情当凡,我是刑警寧澤山害,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宁玫,受9級特大地震影響粗恢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欧瘪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一眷射、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佛掖,春花似錦妖碉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拴魄,卻和暖如春冗茸,著一層夾襖步出監(jiān)牢的瞬間席镀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工夏漱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豪诲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓挂绰,卻偏偏與公主長得像屎篱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子葵蒂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,152評論 25 707
  • 6.1 公鑰密鑰加密原理 6.1.1 基礎(chǔ)知識 密鑰:一般就是一個字符串或數(shù)字交播,在加密或者解密時傳遞給加密/解密算...
    AndroidMaster閱讀 4,011評論 1 8
  • 一、簡歷準(zhǔn)備 1践付、個人技能 (1)自定義控件秦士、UI設(shè)計、常用動畫特效 自定義控件 ①為什么要自定義控件荔仁? Andr...
    lucas777閱讀 5,206評論 2 54
  • 昨天終于騰出時間伍宦,去看了馮導(dǎo)的《芳華》。整個電影下來乏梁,心情都處在一個沉重壓抑的情緒中次洼!聽到電影院里,時不...
    小路和她的貓閱讀 227評論 6 2
  • 只要梯子足夠長 我就會上到天上 扯來一片祥云 做一雙隱形的翅膀 討來一顆星辰 把長夜的寂寥點(diǎn)亮 我要飛過葉落遇骑,飛過...
    江城妖怪閱讀 161評論 0 2