自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

鴻蒙HarmonyOS三方件開發(fā)指南(3)-AsyncHttpHarmony組件

開發(fā) OpenHarmony
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

1. AsyncHttpHarmony功能介紹

1.1. 組件介紹

在做HarmonyOS開發(fā)過程中,用java原生的HttpsURLConnection實(shí)現(xiàn)網(wǎng)絡(luò)請求很難高效的達(dá)到預(yù)期效果。我們需要高效的處理數(shù)據(jù)解析,更加快捷的實(shí)現(xiàn)UI線程更新,這里基于方網(wǎng)絡(luò)框架AsyncHttpClient二次封裝,更加高效實(shí)現(xiàn)網(wǎng)絡(luò)請求及數(shù)據(jù)處理。同時HarmonyOS為我們提供了TaskDispatcher類派發(fā)同步任務(wù),達(dá)到更新UI的效果。

1.2. TV模擬器上運(yùn)行效果

請求前:


點(diǎn)擊get請求之后:


2. AsyncHttpHarmony使用方法

2.1. 為應(yīng)用添加httplibrary-debug.har包依賴

在應(yīng)用模塊中調(diào)用HAR,常用的添加依賴的方式包括如下兩種。

Ø 方式一:依賴本地HAR

第一步:將httplibrary-debug.har復(fù)制到entry\libs目錄下即可(由于build.gradle中已經(jīng)依賴libs目錄下的*.har,因此不需要再做修改)。


查看工程目錄中build.gradle下的*.har是否存在:


第二步:需要添加外部依賴實(shí)現(xiàn)Header類的引入,引入方式如下圖,引入完之后同步下即可可以使用。


2.2. 為應(yīng)用添加網(wǎng)絡(luò)權(quán)限,config.json文件部分代碼如下:

  1. "reqPermissions": [ 
  2.  
  3.  
  4. "name""ohos.permission.INTERNET"
  5.  
  6. "reason"""
  7.  
  8. "usedScene": { 
  9.  
  10. "ability": [ 
  11.  
  12. "com.example.ohosdemo.MainAbility"
  13.  
  14. "com.example.ohosdemo.slice.MainAbilitySlice" 
  15.  
  16. ], 
  17.  
  18. "when""always" 
  19.  
  20.  
  21. }, 

 以上操作無誤之后就可以進(jìn)行編碼了!

3. AsyncHttpHarmony開發(fā)實(shí)現(xiàn)

3.1. 主頁面的布局文件

定義一個Text文本用來顯示請求返回的數(shù)據(jù),一個text實(shí)現(xiàn)請求點(diǎn)擊事件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. <DirectionalLayout 
  4.  
  5.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  6.  
  7.     ohos:height="match_parent" 
  8.  
  9.     ohos:width="match_parent" 
  10.  
  11.     ohos:orientation="vertical"
  12.  
  13.  
  14.  
  15.  
  16.     <Text 
  17.  
  18.         ohos:id="$+id:tvResult" 
  19.  
  20.         ohos:height="match_content" 
  21.  
  22.         ohos:width="match_content" 
  23.  
  24.         ohos:background_element="$graphic:background_ability_main" 
  25.  
  26.         ohos:layout_alignment="horizontal_center" 
  27.  
  28.         ohos:text="數(shù)據(jù)顯示" 
  29.  
  30.         ohos:text_size="50" 
  31.  
  32.         ohos:top_margin="180vp" 
  33.  
  34.     /> 
  35.  
  36.     <Text 
  37.  
  38.         ohos:id="$+id:tvRequest" 
  39.  
  40.         ohos:height="match_content" 
  41.  
  42.         ohos:width="match_content" 
  43.  
  44.         ohos:background_element="$graphic:background_ability_main" 
  45.  
  46.         ohos:layout_alignment="horizontal_center" 
  47.  
  48.         ohos:text="get請求" 
  49.  
  50.         ohos:text_size="50" 
  51.  
  52.         ohos:top_margin="80vp" 
  53.  
  54.         /> 
  55.  
  56.  
  57.  
  58.  
  59. </DirectionalLayout> 

 3.2. MainAbilitySlice代碼如下

核心代碼是initListener,其中聲明了一個 AsyncHttpClient對象,設(shè)置請求參數(shù),調(diào)用get方法獲取ulr返回結(jié)果,然后通過TaskDispatcher類派發(fā)同步任務(wù)達(dá)到更新UI的效果,代碼如下:

  1. package com.huawei.asynchttpharmonyos.slice; 
  2.  
  3.  
  4.  
  5.  
  6. import com.example.httplibrary.utils.AsyncHttpClient; 
  7.  
  8. import com.example.httplibrary.utils.JsonHttpResponseHandler; 
  9.  
  10. import com.example.httplibrary.utils.RequestParams; 
  11.  
  12. import com.huawei.asynchttpharmonyos.ResourceTable; 
  13.  
  14. import cz.msebera.android.httpclient.Header; 
  15.  
  16. import ohos.aafwk.ability.AbilitySlice; 
  17.  
  18. import ohos.aafwk.content.Intent; 
  19.  
  20. import ohos.agp.components.Component; 
  21.  
  22. import ohos.agp.components.Text; 
  23.  
  24. import ohos.hiviewdfx.HiLog; 
  25.  
  26. import ohos.hiviewdfx.HiLogLabel; 
  27.  
  28.  
  29.  
  30.  
  31. public class MainAbilitySlice extends AbilitySlice { 
  32.  
  33.  
  34.  
  35.  
  36.     private Text tvRequest,tvResult; 
  37.  
  38.  
  39.  
  40.  
  41.     private static final String TAG = "MainAbilitySlice"
  42.  
  43.  
  44.  
  45.  
  46.     private static final HiLogLabel label=new HiLogLabel(HiLog.DEBUG,0x00100,"async-http"); 
  47.  
  48.     @Override 
  49.  
  50.     public void onStart(Intent intent) { 
  51.  
  52.         super.onStart(intent); 
  53.  
  54.         super.setUIContent(ResourceTable.Layout_ability_main); 
  55.  
  56.         initView(); 
  57.  
  58.         initListener(); 
  59.  
  60.     } 
  61.  
  62.  
  63.  
  64.  
  65.     private void initView() { 
  66.  
  67.         tvResult = (Text) findComponentById(ResourceTable.Id_tvResult); 
  68.  
  69.         tvRequest = (Text) findComponentById(ResourceTable.Id_tvRequest); 
  70.  
  71.     } 
  72.  
  73.  
  74.  
  75.  
  76.     private void initListener() { 
  77.  
  78.         tvRequest.setClickedListener(new Component.ClickedListener() { 
  79.  
  80.             @Override 
  81.  
  82.             public void onClick(Component component) { 
  83.  
  84.                 String url="https://apis.juhe.cn/simpleWeather/query"
  85.  
  86.                 String key="32becf485f7f174d4385957b62f28f61"
  87.                  //這里獲取AsyncHttpClient實(shí)例, 這個類提供了get post delete put 請求對外的接口方法 
  88.  
  89.                     AsyncHttpClient client=new AsyncHttpClient(); 
  90.   
  91.                  //這里是我們包裝參數(shù)的實(shí)體類 
  92.  
  93.                     RequestParams params=new RequestParams(); 
  94.  
  95.                     params.put("city","西安"); 
  96.  
  97.                     params.put("key",key); 
  98.                  /這里是實(shí)現(xiàn)get請求的方,JsonHttpResponseHandler會重寫請求成功的onSuccess和onFailure兩個方法,兩個方法內(nèi)部做具體業(yè)務(wù)邏輯 
  99.  
  100.                     client.get(url,params, new JsonHttpResponseHandler() { 
  101.  
  102.                         @Override 
  103.  
  104.                         public void onSuccess(int statusCode, Header[] headers, String responseString) { 
  105.  
  106.                             super.onSuccess(statusCode, headers, responseString); 
  107.  
  108.                             HiLog.error(label,"zel-onSuccess:"+responseString,responseString); 
  109.  
  110.                             // 通知主線程更新UI 
  111.  
  112.                              getUITaskDispatcher().asyncDispatch(new Runnable() { 
  113.  
  114.                                 @Override 
  115.  
  116.                                 public void run() { 
  117.                                  // 這里具體業(yè)務(wù)Text文本顯示請求數(shù)據(jù) 
  118.  
  119.                                     tvResult.setText(responseString); 
  120.  
  121.                                 } 
  122.  
  123.                             }); 
  124.  
  125.                         } 
  126.  
  127.  
  128.  
  129.  
  130.                         @Override 
  131.  
  132.                         public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 
  133.  
  134.                             super.onFailure(statusCode, headers, responseString, throwable); 
  135.  
  136.                             HiLog.error(label,"zel-onFailure:"+responseString,responseString); 
  137.  
  138.                         } 
  139.  
  140.                     }); 
  141.  
  142.  
  143.  
  144.  
  145.             } 
  146.  
  147.         }); 
  148.  
  149.     } 
  150.  
  151.  
  152.  
  153.  
  154.     @Override 
  155.  
  156.     public void onActive() { 
  157.  
  158.         super.onActive(); 
  159.  
  160.     } 
  161.  
  162.  
  163.  
  164.  
  165.     @Override 
  166.  
  167.     public void onForeground(Intent intent) { 
  168.  
  169.         super.onForeground(intent); 
  170.  
  171.     } 
  172.  

項(xiàng)目源代碼地址:https://github.com/isoftstone-dev/Http-Async-HarmonyOS

©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-06-28 14:48:03

鴻蒙HarmonyOS應(yīng)用

2021-02-04 09:45:19

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-03-01 09:48:24

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-02-24 15:22:47

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-01-13 09:40:31

鴻蒙HarmonyOS開發(fā)

2021-02-04 13:06:38

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-04-16 09:28:18

鴻蒙HarmonyOS應(yīng)用

2021-01-12 12:04:40

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-01-21 13:21:18

鴻蒙HarmonyOSPhotoview組件

2021-01-20 09:54:56

鴻蒙HarmonyOS開發(fā)

2021-02-26 14:15:27

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-05-12 15:17:39

鴻蒙HarmonyOS應(yīng)用

2021-01-22 17:33:03

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-03-19 17:42:01

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-04-20 09:42:20

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-03-01 14:01:41

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-03-31 09:50:25

鴻蒙HarmonyOS應(yīng)用開發(fā)

2021-04-12 09:36:54

鴻蒙HarmonyOS應(yīng)用

2021-03-10 15:03:40

鴻蒙HarmonyOS應(yīng)用

2021-08-04 14:16:41

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號