簡介
鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實(shí)現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrofit相似的使用,解放雙手般優(yōu)雅使用注解、自動解析json
很遺憾,目前沒能直接發(fā)布bintray,DevEco Studio上傳bintray,gradle安裝不通過,所以如果要使用,clone下來,引入module即可
HttpNet基本和進(jìn)階使用方式,可以進(jìn)行合適的封裝,簡化請求邏輯
鴻蒙開發(fā)文檔參考:[qr23.cn/AKFP8k
]可以復(fù)制地址前往。
構(gòu)建GET請求:和okhttp類似
RequestParams params = new RequestParams()
.put("userName","oscer")
.put("pwd","oschina");
Request request = new Request.Builder().encode("UTF-8")
.method("GET")
.timeout(13000)
.url("http://www.oschina.net")
.build();
構(gòu)建POST請求:
//請求參數(shù)
RequestParams params = new RequestParams()
.put("userName","oscer")
.putFile("fileName","file")
.put("pwd","oschina");
//請求對象
Request request = new Request.Builder()
.encode("UTF-8")
.method("POST")
.params(params)
.timeout(13000)
.url("http://www.oschina.net")
.build();
POST JSON 請求構(gòu)建:
Request request = new Request.Builder()
.encode("UTF-8")
.method("POST")
.content(new JsonContent("json")
.timeout(13000)
.url("http://www.oschina.net")
.build();
執(zhí)行請求:
//構(gòu)建Http客戶端,這里可以進(jìn)行全局static final
HttpNetClient client = new HttpNetClient();
client.setProxy("192.168.1.1",80);//您也可以開啟該客戶端全局代理
client.addInterceptor(new Interceptor() {
/* 攔截器在執(zhí)行請求前都會走到這一步,如果是同步的,就是當(dāng)前線程,如果是異步,就是子線程
* 因此可以在這里動態(tài)添加全局Cookie或其它Header之類的
* 進(jìn)階使用:如果要求對所有接口Form表單進(jìn)行全局加密,也可以在這里執(zhí)行
*/
@Override
public void intercept(Request request) {
Log.e("請求攔截器當(dāng)前線程: " + Thread.currentThread().getName() + " -- " + request.url());
}
});
//執(zhí)行異步請求
client.newCall(request)
//如果采用上傳文件方式,可以在這里開啟上傳進(jìn)度監(jiān)控
.intercept(new InterceptListener() {
@Override
public void onProgress(final int index, final long currentLength, final long totalLength) {
Log.e("當(dāng)前進(jìn)度", " -- " + ((float) currentLength / totalLength) * 100);
}
})
.execute(new Callback() {
@Override
public void onResponse(Response response) {
String body = response.getBody();//getBody()和toStream()是互斥的
InputStream is = response.toStream();//如果采用下載,可以在這里監(jiān)聽下載進(jìn)度
}
@Override
public void onFailure(Exception e) {
Log.e("onFailure " + e.getMessage());
}
});
// 也可以在子線程中執(zhí)行同步請求,如果有幾個接口需要進(jìn)行順序請求,此方法最佳
try {
Response response = client.newCall(request).execute();
String body = response.getBody();
}catch (Exception e){
e.printStackTrace();
}
Retrofit使用方式,底層網(wǎng)絡(luò)實(shí)現(xiàn)基于前面的 HttpNetClient,基于運(yùn)行時注解添加請求配置,UI切換使用鴻蒙EventHandler
// 構(gòu)建請求java接口,采用動態(tài)代理+注解實(shí)現(xiàn),服務(wù)器返回什么,Call< 服務(wù)器返回json對應(yīng)的Java bean >即可
public interface LoginService {
//普通POST,方法名添加請求方法注解POST、GET、DELETE、Header等,方法參數(shù)添加Form表單注解
@Headers({"Cookie:cid=adcdefg;"})//靜態(tài)Header
@POST("api/users/login")
Call
執(zhí)行請求
public static final String API = "http://www.oschina.net/";
public static Retrofit retrofit = new Retrofit();
retrofit.registerApi(API);//注冊api
//進(jìn)階使用,假設(shè)服務(wù)器返回來的json內(nèi)容是aes加密的,那么可以添加轉(zhuǎn)化器,攔截響應(yīng),aes解密后再返回,此方法一定在子線程執(zhí)行,直接執(zhí)行耗時操作
retrofit.setConverterFactory(new ConverterFactory() {
@Override
public void convert(com.haibin.retrofit.Response response) {
response.setBodyString("{json}");//攔截響應(yīng)數(shù)據(jù),修改內(nèi)容,如aes解密后再返回
Log.e("響應(yīng)轉(zhuǎn)換器當(dāng)前線程: " + Thread.currentThread().getName());
}
});
//執(zhí)行異步請求,異步請求可以直接在UI線程執(zhí)行
retrofit.from(LoginService.class)
.login("xxx@qq.com", "123456", 2, 2);
.withHeaders(Headers...)//動態(tài)添加某些Header
.execute(new Callback
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
框架
+關(guān)注
關(guān)注
0文章
397瀏覽量
17358 -
鴻蒙OS
+關(guān)注
關(guān)注
0文章
188瀏覽量
4346
發(fā)布評論請先 登錄
相關(guān)推薦
初識鴻蒙OS
1.0版本的設(shè)計和開發(fā);2018年,華為公司完成了鴻蒙內(nèi)核2.0版本的設(shè)計和研發(fā);2019年,華為的智慧屏率先搭載鴻蒙操作系統(tǒng);2020年9月11日,華為正式發(fā)布鴻蒙操作系統(tǒng),并舉行
發(fā)表于 09-10 15:28
鴻蒙OS應(yīng)用程序開發(fā)
這份學(xué)習(xí)文檔主要是帶領(lǐng)大家在鴻蒙OS上學(xué)習(xí)開發(fā)一個應(yīng)用程序,主要知識點(diǎn)如下:1、U-Boot引導(dǎo)文件燒寫方式;2、內(nèi)核鏡像燒寫方式;3、鏡像運(yùn)行。
發(fā)表于 09-11 14:39
鴻蒙os系統(tǒng)是什么意思 鴻蒙os系統(tǒng)有什么作用
毫秒級。鴻蒙OS實(shí)現(xiàn)模塊化耦合,對應(yīng)不同設(shè)備可彈性部署,鴻蒙OS有三層架構(gòu),第一層是內(nèi)核,第二層是基礎(chǔ)服務(wù),第三層是程序框架,可用于手機(jī)、平
發(fā)表于 12-17 11:34
鴻蒙應(yīng)用開發(fā)的JS UI框架如何實(shí)現(xiàn)高德地圖的訪問?
鴻蒙應(yīng)用,現(xiàn)在分為Java UI框架和Ark UI框架,其中JS UI開發(fā)者框架Ark UI框架
發(fā)表于 04-28 11:44
鴻蒙 OS 應(yīng)用開發(fā)初體驗(yàn)
的操作系統(tǒng)平臺和開發(fā)框架。HarmonyOS 的目標(biāo)是實(shí)現(xiàn)跨設(shè)備的無縫協(xié)同和高性能。
DevEco Studio
對標(biāo) Android Studio,開發(fā)鴻蒙
發(fā)表于 11-02 19:38
嵌入式系統(tǒng)設(shè)計與實(shí)例開發(fā)—ARM與uC/OS-Ⅱ
嵌入式系統(tǒng)設(shè)計與實(shí)例開發(fā) ——ARM與uC/OS-Ⅱ
發(fā)表于 11-08 17:32
?0次下載
鴻蒙OS初心是面向IoT,IoT系統(tǒng)碎片化才是鴻蒙需解決的關(guān)鍵問題
副總裁楊海松說,“既然我們已經(jīng)做出了開發(fā)者Beta版,這說明我們已經(jīng)準(zhǔn)備好了?!?此次華為主要介紹了鴻蒙OS 2.0會向開發(fā)者提供的三個核心能力:分布式的編程
華為鴻蒙OS 2.0帶來哪些智慧體驗(yàn)?
華為已經(jīng)定于12月16日在北京發(fā)布鴻蒙OS 2.0手機(jī)開發(fā)者Beta版本。這不僅是手機(jī)鴻蒙OS的首次亮相,同時也意味著手機(jī)
鴻蒙OS 2.0手機(jī)開發(fā)者Beta版發(fā)布會在京舉辦
三個月前,鴻蒙OS 2.0正式在華為開發(fā)者大會2020亮相。12月16日,鴻蒙OS 2.0手機(jī)開發(fā)
華為正式推出鴻蒙OS的手機(jī)開發(fā)者Beta版
12月16日上午消息,華為今日宣布正式推出鴻蒙OS的手機(jī)開發(fā)者Beta版,華為消費(fèi)者業(yè)務(wù)軟件部總裁王成錄表示,今年已有美的、九陽、老板電器、海雀科技搭載鴻蒙
華為發(fā)布鴻蒙OS Beta版
昨天華為發(fā)布鴻蒙OS Beta版了?鴻蒙系統(tǒng)一直在按照既有步伐前進(jìn),現(xiàn)在華為發(fā)布鴻蒙OS Beta版,而且一些生態(tài)
鴻蒙OS與Lite OS的區(qū)別是什么
鴻蒙OS鴻蒙OS面向未來、面向全場景、分布式。在單設(shè)備系統(tǒng)能力基礎(chǔ)上,鴻蒙OS提出了基于同一套系
鴻蒙os怎么升級
6月2日,華為正式發(fā)布了鴻蒙armonyOS 2系統(tǒng),那么鴻蒙os如何升級?現(xiàn)將鴻蒙os升級方式告知如下。
鴻蒙os2.0系統(tǒng)官網(wǎng)
的全新芯片,更多個性化操作的推出會讓用戶們更加舒適的使用鴻蒙2.0系統(tǒng)。 鴻蒙2.0系統(tǒng)介紹:DFX 鴻蒙os2.0系統(tǒng)官網(wǎng)下載,為不同的硬件架構(gòu)和資源提供了基于組件和可定制的DFX
華為開發(fā)者大會2021鴻蒙os在哪場
華為開發(fā)者大會2021將在10月22日-24日舉辦,地點(diǎn)為東莞松山湖,鴻蒙os 3.0或?qū)⑴c我們見面,那么華為開發(fā)者大會2021鴻蒙
評論