• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 安卓學習筆記5——網絡編程

    標簽: 安卓學習

    一、HttpUrlConnection

    1.請求數據:get

    大致步驟:

    			URL url=new URL("https://www.baidu.com");
    //            創建httpurlconnection對象
                HttpURLConnection conn= (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5000);
                int code =conn.getResponseCode();
                 if (code==200){
                 InputStream in=conn.getInputStream();}
    

    2.提交數據:get/post

    (1)HTTP協議:查看網絡連接過程中http協議內容

    包含請求內容和響應內容

    請求內容
    在這里插入圖片描述

    • 完整的請求格式包含:請求行、頭信息、請求體
    1. 請求行:請求中第一行信息—-包括三個部分請求方式、資源路徑、HTTP協議版本
      例如:GET/HTTP/1.1
      HTTP請求方式有幾種:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
      常用兩種:GET、POST

    2. 頭信息:包含一些鍵值對,描述請求的信息
      Accept:text/html,image/——-客戶端可以接收文件類型text/htmlTl文件image/任意格式圖片
      Accept-Charset:ISO-8859-1-----客戶端可以識別編碼字行集
      Accept-Encoding:gzip–——-客戶端可以識別壓縮數據格式gzip是一種壓縮格式
      Accept-Language:zh-cn——-客戶端瀏覽器語高,Host:www.itcast.com:80----訪問服務器地址

    3. 請求體:傳輸的數據

    響應內容
    在這里插入圖片描述

    (2)Post與Get方式提交數據的區別

    1. Get方式: url地址后攜帶數據有大小限制1K(http協議是4k),提交數據在url上顯示;以?分隔url和參數,參數采用鍵值對格式,多個參數使用&符合分隔

    如:http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD&rsv_spt=1&rsv_iqid=0xa13e92b20002bf94&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_dl=tb&rsv_enter=0

    1. POST 數據在請求體中,不在url上顯示,沒有數據大小跟制
      username=zhangsan 請求體和頭信息直接存在一個空行

    (3)使用示例

    • get
      與請求數據無異,差別在于url地址
    • post
    conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded")
    conn.setRequestProperty("Content-Length",data.length()+"");
    conn.setDoOutput(true)//設置一個標記允許輸出
    conn.getoutputStream().write(data.getBytes());
    

    3.亂碼問題

    客戶端與服務器端編碼方式不同
    安卓默認編碼方式:utf-8

    對于服務器傳輸給客戶端的數據,按照服務器的編碼方式解碼即可
    對于傳輸給服務器的數據,比如中文的話,可以先驚醒urlencode

    二、httpclient

    開源項目,被封裝到android api中

    get
    在這里插入圖片描述
    post
    在這里插入圖片描述
    在這里插入圖片描述

    三、AsyncHttpClient

    封裝了子線程,handler等

    get
    在這里插入圖片描述

    post
    在這里插入圖片描述

    四、三種方式的比較

    1. httpurlconnection:可以自己封裝請求頭信息,定制
    2. httpclient(了解,沒有人用)
    3. 開源項目(asynchttpclient):通用,方便
    版權聲明:本文為qq_34782535原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_34782535/article/details/103312914

    智能推薦

    安卓學習筆記12:安卓按鍵事件

    文章目錄 零、學習目標 一、安卓界面事件 (一)安卓常用事件 1、單擊事件 2、焦點事件 3、按鍵事件 4、觸碰事件 (二)安卓事件處理方式 1、基于回調的事件處理機制 2、基于監聽的事件處理機制 二、教學案例——通過按鍵移動米老鼠 (一)運行效果 (二)涉及知識點 (三)實現步驟 1、創建安卓應用【MoveMickeyByKey】 2、準備背景圖片與米老鼠圖片,拷貝到dr...

    安卓學習筆記——SQLite學習

    SQLite簡介: 開源關系型數據庫,運算速度快,占用資源少,在內存上只有幾百k的存儲空間,非常適用于移動端。 SQLite特點 占用空間小 運行高效 可移植性好 支持標準SQL語法 支持ACID事務 零配置:無需安裝和網絡管理配置 支持多種開發語言,C, PHP, Perl, Java, C#,Python SQLite沒有服務器進程,它通過文件保存數據,該文件是跨平臺的,可以放在其他平臺中使用...

    h5學習筆記:rem單位在一些安卓機計算異常

    1.項目描述 一款App+h5進行混合開發,App通過webview方式對h5進行遠程加載。h5采用了vuejs進行開發,適配采用了px2rem插件方式進行批量轉換。 2.項目異常現象 混合開發增加了調試的難度,也增加了人員開發的溝通成本。使用了rem單位進行適配在大多數機型表現還算OK。我們通常的做法是設置html 根字體大小,然后通過rem來轉換。如果設置根字體是100px=1rem,div寬...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡