Android Http協(xié)議訪(fǎng)問(wèn)網(wǎng)絡(luò)實(shí)例(3種)
之前關(guān)于Android Http協(xié)議訪(fǎng)問(wèn)網(wǎng)絡(luò)的一點(diǎn)分析,最近需要回顧,就順便發(fā)到隨筆上了
Android中http連接主要是為了獲取網(wǎng)絡(luò)數(shù)據(jù),目前了解的有3種方法:
- Httpconnection ——本人常用
- OKHTTP——看見(jiàn)過(guò)(需要在依賴(lài)中引入包)
- HttpClient——過(guò)氣的方法(棄用)
HTTPCONNECTION
由于網(wǎng)絡(luò)連接是耗時(shí)操作不能在UI線(xiàn)程操作,一般通過(guò)Handler獲取子線(xiàn)程中獲取的數(shù)據(jù)
Handler mhandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//數(shù)據(jù)處理邏輯
}
};
如何在UI線(xiàn)程中調(diào)用Http方法類(lèi)(很久以前琢磨了很久):
new JsonText(mhandler);
返回的類(lèi)型都是String,這里直接寫(xiě)在一個(gè)類(lèi)里以后方便用
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è)置請(qǐng)求方式,可以不設(shè)置,默認(rèn)是GET
connection.setConnectTimeout(5000);//設(shè)置請(qǐng)求超時(shí)時(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ù)雜就不贅述了,接下來(lái)說(shuō)其他幾點(diǎn):
thread:
經(jīng)常聽(tīng)到有問(wèn)sleep()和wait()有什么區(qū)別。sleep()方法來(lái)自thread類(lèi)中,而wait()來(lái)自object類(lèi)中;其次,sleep()方法調(diào)用的時(shí)候不出讓系統(tǒng)資源,wait()讓出系統(tǒng)資源其他線(xiàn)程可以占用CPU;最后,sleep(milliseconds)需要指定一個(gè)睡眠時(shí)間,時(shí)間一到會(huì)自動(dòng)喚醒。
http(超文本傳輸協(xié)議) ,https(超文本傳輸協(xié)議安全版)
關(guān)于TCP/IP 和UPD:
TCP/IP比UDP穩(wěn)定,但是慢,因?yàn)樗腥挝帐謾C(jī)制
關(guān)于三次握手:
網(wǎng)上有很多解釋?zhuān)约簲⑹鼍褪侵鳈C(jī)先問(wèn)服務(wù)器,我可以發(fā)數(shù)據(jù)了嗎,服務(wù)器回答,可以了,主機(jī)在說(shuō),那我發(fā)了。具體的內(nèi)容以后在詳細(xì)理解,先上圖

OKHTTP
書(shū)上的描述是:出色的網(wǎng)絡(luò)通信庫(kù)可以用來(lái)代替Httpconnection。你說(shuō)出色我就用咯。
添加依賴(lài):
dependencies {
compile 'com.squareup.okhttp3:okhttp:3.4.1'
}
使用
OkHttpClient client =new OkHttpClient(); //創(chuàng)建實(shí)例 Request request =new Request.Builder().build();
通過(guò)url()訪(fǎng)問(wèn)網(wǎng)絡(luò):
Request request =new Request.Builder().url("www.baidu.com").build();
之后調(diào)用newCall()方法創(chuàng)建call對(duì)象,并調(diào)用excute()方法發(fā)送請(qǐng)求并獲取服務(wù)器數(shù)據(jù):
Response response=client.newCall(request).excute(); String str=response..body().toString();//得到值
說(shuō)一下上述兩個(gè)方法都只說(shuō)了get,沒(méi)有post(提交數(shù)據(jù)),原因是懶了,以后再說(shuō)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Flutter實(shí)現(xiàn)動(dòng)態(tài)高斯模糊的流程步驟
一個(gè)App加上高斯模糊會(huì)形成一種高級(jí)的感覺(jué),本文將介紹如何制作一個(gè)根據(jù)背景內(nèi)容來(lái)動(dòng)態(tài)高斯模糊,文中有詳細(xì)的代碼實(shí)現(xiàn)步驟,代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-11-11
Android仿天貓橫向滑動(dòng)指示器功能的實(shí)現(xiàn)
這篇文章主要介紹了Android仿天貓橫向滑動(dòng)指示器,Android開(kāi)發(fā)中會(huì)有很多很新奇的交互,比如天貓商城的首頁(yè)頭部的分類(lèi),使用的是GridLayoutManager+橫向指示器實(shí)現(xiàn)的,需要的朋友可以參考下2022-08-08
Android開(kāi)發(fā)之AlarmManager的用法詳解
這篇文章主要介紹了Android開(kāi)發(fā)之AlarmManager的用法,是Android應(yīng)用開(kāi)發(fā)中非常實(shí)用的技能,需要的朋友可以參考下2014-07-07
Android開(kāi)發(fā)實(shí)現(xiàn)消除屏幕鎖的方法
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)消除屏幕鎖的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android鎖屏的原理及消除屏幕鎖的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
Android輸入法與表情面板切換時(shí)的界面抖動(dòng)問(wèn)題解決方法
這篇文章主要介紹了Android輸入法與表情面板切換時(shí)的界面抖動(dòng)問(wèn)題解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android屬性動(dòng)畫(huà)特點(diǎn)詳解
這篇文章主要為大家詳細(xì)介紹了Android屬性動(dòng)畫(huà)特點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Android中關(guān)于FragmentA嵌套FragmentB的問(wèn)題
這篇文章主要為大家詳細(xì)介紹了Android中關(guān)于FragmentA嵌套FragmentB的問(wèn)題,感興趣的小伙伴們可以參考一下2016-08-08

