成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 OpenHarmony
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

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

1. AsyncHttpHarmony功能介紹

1.1. 組件介紹

在做HarmonyOS開發過程中,用java原生的HttpsURLConnection實現網絡請求很難高效的達到預期效果。我們需要高效的處理數據解析,更加快捷的實現UI線程更新,這里基于方網絡框架AsyncHttpClient二次封裝,更加高效實現網絡請求及數據處理。同時HarmonyOS為我們提供了TaskDispatcher類派發同步任務,達到更新UI的效果。

1.2. TV模擬器上運行效果

請求前:


點擊get請求之后:


2. AsyncHttpHarmony使用方法

2.1. 為應用添加httplibrary-debug.har包依賴

在應用模塊中調用HAR,常用的添加依賴的方式包括如下兩種。

Ø 方式一:依賴本地HAR

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


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


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


2.2. 為應用添加網絡權限,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. }, 

 以上操作無誤之后就可以進行編碼了!

3. AsyncHttpHarmony開發實現

3.1. 主頁面的布局文件

定義一個Text文本用來顯示請求返回的數據,一個text實現請求點擊事件

  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="數據顯示" 
  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對象,設置請求參數,調用get方法獲取ulr返回結果,然后通過TaskDispatcher類派發同步任務達到更新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實例, 這個類提供了get post delete put 請求對外的接口方法 
  88.  
  89.                     AsyncHttpClient client=new AsyncHttpClient(); 
  90.   
  91.                  //這里是我們包裝參數的實體類 
  92.  
  93.                     RequestParams params=new RequestParams(); 
  94.  
  95.                     params.put("city","西安"); 
  96.  
  97.                     params.put("key",key); 
  98.                  /這里是實現get請求的方,JsonHttpResponseHandler會重寫請求成功的onSuccess和onFailure兩個方法,兩個方法內部做具體業務邏輯 
  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.                                  // 這里具體業務Text文本顯示請求數據 
  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.  

項目源代碼地址:https://github.com/isoftstone-dev/Http-Async-HarmonyOS

©著作權歸作者和HarmonyOS技術社區共同所有,如需轉載,請注明出處,否則將追究法律責任

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

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

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-06-28 14:48:03

鴻蒙HarmonyOS應用

2021-02-04 09:45:19

鴻蒙HarmonyOS應用開發

2021-01-21 13:21:18

鴻蒙HarmonyOSPhotoview組件

2021-01-12 12:04:40

鴻蒙HarmonyOS應用開發

2021-01-20 09:54:56

鴻蒙HarmonyOS開發

2021-03-01 09:48:24

鴻蒙HarmonyOS應用開發

2021-02-24 15:22:47

鴻蒙HarmonyOS應用開發

2021-02-04 13:06:38

鴻蒙HarmonyOS應用開發

2021-01-13 09:40:31

鴻蒙HarmonyOS開發

2021-04-16 09:28:18

鴻蒙HarmonyOS應用

2021-01-22 17:33:03

鴻蒙HarmonyOS應用開發

2021-05-12 15:17:39

鴻蒙HarmonyOS應用

2021-02-26 14:15:27

鴻蒙HarmonyOS應用開發

2021-03-19 17:42:01

鴻蒙HarmonyOS應用開發

2021-04-20 09:42:20

鴻蒙HarmonyOS應用開發

2021-03-01 14:01:41

鴻蒙HarmonyOS應用開發

2021-03-31 09:50:25

鴻蒙HarmonyOS應用開發

2021-04-12 09:36:54

鴻蒙HarmonyOS應用

2021-03-10 15:03:40

鴻蒙HarmonyOS應用

2021-08-02 14:54:50

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级看片免费视频囗交动图 | 欧美日韩a | 欧美在线视频一区 | 在线成人av | 91成人精品| 日韩av在线免费 | 玖玖综合网 | 国产精品不卡视频 | 精品一区二区三区四区五区 | 在线欧美小视频 | 一级在线观看 | 色一阁 | 精品国产色 | 国产午夜精品福利 | 国产精品成人一区二区三区夜夜夜 | 国产欧美日韩精品一区二区三区 | 欧美jizzhd精品欧美巨大免费 | 青青草原精品99久久精品66 | 免费成人国产 | 成人免费视频观看视频 | 久久精品一区二区三区四区 | 婷婷毛片| 精品乱人伦一区二区三区 | 精品欧美一区二区中文字幕视频 | 中文字幕国产视频 | 欧美专区日韩专区 | 久久久网 | 欧美日韩一区二区电影 | 精品一区二区在线观看 | 久久久国产精品视频 | 91视频观看| 人人干在线 | 欧州一区二区 | 欧美日韩高清一区二区三区 | 亚洲一二三区免费 | 91免费观看在线 | 久久久久久久久国产 | 欧美精品一区二区三区在线 | 蜜桃久久| 网站黄色在线免费观看 | 9色视频在线|