安卓學習筆記5——網絡編程
標簽: 安卓學習
安卓學習筆記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協議內容
包含請求內容和響應內容
請求內容
- 完整的請求格式包含:請求行、頭信息、請求體
-
請求行:請求中第一行信息—-包括三個部分請求方式、資源路徑、HTTP協議版本
例如:GET/HTTP/1.1
HTTP請求方式有幾種:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用兩種:GET、POST -
頭信息:包含一些鍵值對,描述請求的信息
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----訪問服務器地址 -
請求體:傳輸的數據
響應內容
(2)Post與Get方式提交數據的區別
- 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
- 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
四、三種方式的比較
- httpurlconnection:可以自己封裝請求頭信息,定制
- httpclient(了解,沒有人用)
- 開源項目(asynchttpclient):通用,方便
智能推薦
安卓學習筆記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寬...
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 以上述例子,判斷一個生產出...