Android入門之Http請(qǐng)求方式Get與Post

前言:在Android開發(fā)的過(guò)程中,必須會(huì)接觸到數(shù)據(jù)交互(訪問(wèn)數(shù)據(jù),寫入數(shù)據(jù)等你等),既然接觸到數(shù)據(jù)的交互幌甘,那么自然而然就是使用通訊間的協(xié)議來(lái)進(jìn)行請(qǐng)求,最常見(jiàn)的協(xié)議就是Http協(xié)議,Http協(xié)議包括兩個(gè)具體的請(qǐng)求方式-Get以及Post吃谣。


  • Http請(qǐng)求方式Get與Post的簡(jiǎn)介
    先來(lái)了解Http協(xié)議:Http(HyperText Transfer Protocol超文本傳輸協(xié)議)是一個(gè)設(shè)計(jì)來(lái)使客戶端和服務(wù)器順利進(jìn)行通訊的協(xié)議。
    HTTP在客戶端和服務(wù)器之間以request-response protocol(請(qǐng)求-回復(fù)協(xié)議)工作做裙。
    簡(jiǎn)單來(lái)說(shuō)呢岗憋,Get與Post就是基于http協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)交互方式。

  • Get與Post的主要區(qū)別
    在Android開發(fā)的過(guò)程中锚贱,該如何選擇Http的Get還是Post來(lái)進(jìn)行通訊呢澜驮?那就詳細(xì)探索他們之間的差異。
    1.get通常是從服務(wù)器上獲取數(shù)據(jù)惋鸥,post通常是向服務(wù)器傳送數(shù)據(jù)杂穷。
    2.get是把參數(shù)數(shù)據(jù)隊(duì)列加到表單的 ACTION屬性所指的URL中悍缠,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到耐量,實(shí)際上就是URL拼接方式飞蚓。post是通過(guò)HTTPpost機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址廊蜒。
    3.對(duì)于get方式趴拧,服務(wù)器端用 Request.QueryString獲取變量的值,對(duì)于post方式山叮,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)著榴。
    4.get 傳送的數(shù)據(jù)量較小,不能大于1KB[IE,Oher:4]屁倔。post傳送的數(shù)據(jù)量較大脑又,一般被默認(rèn)為不受限制。但理論上锐借,IIS4中最大量為80KB问麸,IIS5中為100KB。
    5.get安全性非常低钞翔,post安全性較高严卖。

  • Android如何使用Get與Post協(xié)議
    不多說(shuō),上代碼展示(演示用戶登錄訪問(wèn)服務(wù)器)
public class LoginServer {    
   /**     
   *get的方式請(qǐng)求     
   *@param username 用戶名     
   *@param password 密碼     
   *@return 返回null 登錄異常     
   */ 
public static String loginByGet(String username,String password){
        //get的方式提交就是url拼接的方式
        String path = "http://172.16.168.111:1010/login.php?username="+username+"&password="+password;
        try {
            URL url = new URL(path);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(5000);
            connection.setRequestMethod("GET");
            //獲得結(jié)果碼
            int responseCode = connection.getResponseCode();
            if(responseCode ==200){
                //請(qǐng)求成功 獲得返回的流
                InputStream is = connection.getInputStream();
                return IOSUtil.inputStream2String(is);
            }else {
                //請(qǐng)求失敗
                return null;
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
   /** * post的方式請(qǐng)求 
   *@param username 用戶名 
   *@param password 密碼 
   *@return 返回null 登錄異常 
   */
    public static String loginByPost(String username,String password){
        String path = "http://172.16.168.111:1010/login.php";
        try {
            URL url = new URL(path);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(5000);
            connection.setRequestMethod("POST");

            //數(shù)據(jù)準(zhǔn)備
            String data = "username="+username+"&password="+password;
            //至少要設(shè)置的兩個(gè)請(qǐng)求頭
            connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            connection.setRequestProperty("Content-Length", data.length()+"");

            //post的方式提交實(shí)際上是留的方式提交給服務(wù)器
            connection.setDoOutput(true);
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(data.getBytes());

            //獲得結(jié)果碼
            int responseCode = connection.getResponseCode();
            if(responseCode ==200){
                //請(qǐng)求成功
                InputStream is = connection.getInputStream();
                return IOSUtil.inputStream2String(is);
            }else {
                //請(qǐng)求失敗
                return null;
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末布轿,一起剝皮案震驚了整個(gè)濱河市哮笆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汰扭,老刑警劉巖稠肘,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異东且,居然都是意外死亡启具,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門珊泳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲁冯,“玉大人,你說(shuō)我怎么就攤上這事色查∈硌荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵秧了,是天一觀的道長(zhǎng)跨扮。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么衡创? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任帝嗡,我火速辦了婚禮,結(jié)果婚禮上璃氢,老公的妹妹穿的比我還像新娘哟玷。我一直安慰自己,他們只是感情好一也,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布巢寡。 她就那樣靜靜地躺著,像睡著了一般椰苟。 火紅的嫁衣襯著肌膚如雪抑月。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天舆蝴,我揣著相機(jī)與錄音谦絮,去河邊找鬼。 笑死须误,一個(gè)胖子當(dāng)著我的面吹牛挨稿,可吹牛的內(nèi)容都是我干的仇轻。 我是一名探鬼主播京痢,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼篷店!你這毒婦竟也來(lái)了祭椰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疲陕,失蹤者是張志新(化名)和其女友劉穎方淤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹄殃,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡携茂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诅岩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讳苦。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吩谦,靈堂內(nèi)的尸體忽然破棺而出鸳谜,到底是詐尸還是另有隱情,我是刑警寧澤式廷,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布咐扭,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蝗肪。R本人自食惡果不足惜袜爪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望薛闪。 院中可真熱鬧饿敲,春花似錦、人聲如沸逛绵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)术浪。三九已至瓢对,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胰苏,已是汗流浹背硕蛹。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硕并,地道東北人法焰。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像倔毙,于是被迫代替她去往敵國(guó)和親埃仪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理陕赃,服務(wù)發(fā)現(xiàn)卵蛉,斷路器,智...
    卡卡羅2017閱讀 134,668評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法么库,類相關(guān)的語(yǔ)法傻丝,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法诉儒,異常的語(yǔ)法葡缰,線程的語(yǔ)...
    子非魚_t_閱讀 31,644評(píng)論 18 399
  • 前言 說(shuō)到HTTP協(xié)議,那必須要說(shuō)說(shuō)WWW了忱反,WWW是環(huán)球信息網(wǎng)(World Wide Web )的縮寫泛释,也可以簡(jiǎn)...
    hfk閱讀 2,252評(píng)論 1 4
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評(píng)論 0 11
  • 今日出游胁澳,腎是寂寞, 忽見(jiàn)桑葚米者,石榴韭畸,李花宇智, 在這清秋時(shí)節(jié), 不常見(jiàn)來(lái)胰丁, 拍得幾圖随橘, 又打油幾詩(shī), 看客有情锦庸, 自...
    不良公子閱讀 365評(píng)論 11 4