Android Http協(xié)議訪問網(wǎng)絡(luò)實(shí)例(3種)
之前關(guān)于Android Http協(xié)議訪問網(wǎng)絡(luò)的一點(diǎn)分析,最近需要回顧,就順便發(fā)到隨筆上了
Android中http連接主要是為了獲取網(wǎng)絡(luò)數(shù)據(jù),目前了解的有3種方法:
- Httpconnection ——本人常用
- OKHTTP——看見過(需要在依賴中引入包)
- HttpClient——過氣的方法(棄用)
HTTPCONNECTION
由于網(wǎng)絡(luò)連接是耗時操作不能在UI線程操作,一般通過Handler獲取子線程中獲取的數(shù)據(jù)
Handler mhandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //數(shù)據(jù)處理邏輯 } };
如何在UI線程中調(diào)用Http方法類(很久以前琢磨了很久):
new JsonText(mhandler);
返回的類型都是String,這里直接寫在一個類里以后方便用
public class JsonTest { Handler handler; public JsonTest(Handler handler) { this.handler = handler; thread.start(); } Thread thread=new Thread(new Runnable() { @Override public void run() { Message msg=new Message(); try{ InputStream in=null; HttpURLConnection connection=null; URL url=new URL("http://guolin.tech/api/china"); connection=(HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET");//設(shè)置請求方式,可以不設(shè)置,默認(rèn)是GET connection.setConnectTimeout(5000);//設(shè)置請求超時時間 in=connection.getInputStream(); msg.arg1=0x01; msg.obj=in.toString(); handler.sendMessage(msg); }catch (Exception e){ e.printStackTrace(); msg.arg1=0x02; handler.sendMessage(msg); }finally { connection.disconnect(); } } }); }
代碼不復(fù)雜就不贅述了,接下來說其他幾點(diǎn):
thread:
經(jīng)常聽到有問sleep()和wait()有什么區(qū)別。sleep()方法來自thread類中,而wait()來自object類中;其次,sleep()方法調(diào)用的時候不出讓系統(tǒng)資源,wait()讓出系統(tǒng)資源其他線程可以占用CPU;最后,sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒。
http(超文本傳輸協(xié)議) ,https(超文本傳輸協(xié)議安全版)
關(guān)于TCP/IP 和UPD:
TCP/IP比UDP穩(wěn)定,但是慢,因?yàn)樗腥挝帐謾C(jī)制
關(guān)于三次握手:
網(wǎng)上有很多解釋,自己敘述就是主機(jī)先問服務(wù)器,我可以發(fā)數(shù)據(jù)了嗎,服務(wù)器回答,可以了,主機(jī)在說,那我發(fā)了。具體的內(nèi)容以后在詳細(xì)理解,先上圖
OKHTTP
書上的描述是:出色的網(wǎng)絡(luò)通信庫可以用來代替Httpconnection。你說出色我就用咯。
添加依賴:
dependencies { compile 'com.squareup.okhttp3:okhttp:3.4.1' }
使用
OkHttpClient client =new OkHttpClient(); //創(chuàng)建實(shí)例 Request request =new Request.Builder().build();
通過url()訪問網(wǎng)絡(luò):
Request request =new Request.Builder().url("www.baidu.com").build();
之后調(diào)用newCall()方法創(chuàng)建call對象,并調(diào)用excute()方法發(fā)送請求并獲取服務(wù)器數(shù)據(jù):
Response response=client.newCall(request).excute(); String str=response..body().toString();//得到值
說一下上述兩個方法都只說了get,沒有post(提交數(shù)據(jù)),原因是懶了,以后再說
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用DrawerLayout和觸摸事件分發(fā)實(shí)現(xiàn)抽屜側(cè)滑效果
這篇文章主要為大家詳細(xì)介紹了利用DrawerLayout和觸摸事件分發(fā)實(shí)現(xiàn)抽屜側(cè)滑效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10Android編程實(shí)現(xiàn)擦除Bitmap中某一塊的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)擦除Bitmap中某一塊的方法,涉及Android操作Bitmap顏色像素值調(diào)整的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11Android利用HorizontalScrollView仿ViewPager設(shè)計(jì)簡單相冊
這篇文章主要介紹了Android利用HorizontalScrollView仿ViewPager設(shè)計(jì)簡單相冊的相關(guān)資料,需要的朋友可以參考下2016-05-05Android studio button 按鈕 四種綁定事件的方法【實(shí)例代碼】
這篇文章主要介紹了Android studio button 按鈕 四種綁定事件的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08Material Design系列之Behavior實(shí)現(xiàn)支付密碼彈窗和商品屬性選擇效果
這篇文章主要為大家詳細(xì)介紹了Material Design系列之Behavior實(shí)現(xiàn)支付密碼彈窗和商品屬性選擇效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09Android中AlertDialog四種對話框的最科學(xué)編寫用法(實(shí)例代碼)
這篇文章主要介紹了Android中AlertDialog四種對話框的最科學(xué)編寫用法,本文通過代碼講解的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11實(shí)現(xiàn)Android studio設(shè)置自動導(dǎo)包及自動導(dǎo)包快捷鍵
這篇文章主要介紹了實(shí)現(xiàn)Android studio設(shè)置自動導(dǎo)包及自動導(dǎo)包快捷鍵的相關(guān)資料,需要的朋友可以參考下2017-05-05android自定義view實(shí)現(xiàn)推箱子小游戲
這篇文章主要為大家詳細(xì)介紹了android自定義view實(shí)現(xiàn)推箱子小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04