您当前的位置:首页 > 手机百科 > 鸿蒙

「Harmony OS」「JAVA UI」鸿蒙应用如何集成OKHttp网络三方库

时间:2022-08-05 16:07:48  来源:  作者:Java熬夜党

准备资料

接口准备

准备get请求接

 

Post接口

 

如何集成

在项目级别的build.gradle添加如下代码

<pre class="prettyprint hljs Nginx" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">allprojects {    repositories {        maven {            url 'https://repo.huaweicloud.com/repository/maven/'        }        maven {            url 'https://developer.huawei.com/repo/'</pre>

在entry的build.gradle添加如下代码

<pre class="prettyprint hljs delphi" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">'io.openharmony.tpc.thirdlib:okgo:1.0.2'    implementation 'io.openharmony.tpc.thirdlib:okrx:1.0.2'    implementation 'io.openharmony.tpc.thirdlib:okrx2:1.0.2'    implementation 'io.openharmony.tpc.thirdlib:okserver:1.0.2'</pre>

在entry的config.json添加 权限 ​ 代码如下

<pre class="prettyprint hljs lua" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">"reqPermissions": [      {        "name": "ohos.permission.INTE.NET"</pre>

注意事项

如果接口是https的话需要在config.json的deviceConfig里添加如下代码

<pre class="prettyprint hljs lua" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">"deviceConfig": {    "default": {      "network": {        "cleartextTraffic": true</pre>

界面实现

在layout的xml中写三个Text标签,第一个Text用于触发get请求的事件,第二个Text用于触发Post请求的事件,第三个Text用于显示结果,代码和效果图如下

<pre class="prettyprint hljs vim" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><?xml version="1.0" encoding="utf-8"?><DirectionalLayout    xmlns:ohos="http://schemas.huawei.com/res/ohos"    ohos:height="match_parent"    ohos:width="match_parent"    ohos:alignment="horizontal_center"    ohos:orientation="vertical">    <Text        ohos:id="$+id:text_type_get"        ohos:height="100vp"        ohos:width="match_parent"        ohos:text_alignment="center"        ohos:layout_alignment="horizontal_center"        ohos:text="Get请求"        ohos:text_size="40vp"    <Text        ohos:id="$+id:text_type_Post"        ohos:height="100vp"        ohos:text_alignment="center"        ohos:width="match_parent"        ohos:background_element="#ed6262"        ohos:layout_alignment="horizontal_center"        ohos:text="Post请求"        ohos:text_size="40vp"    <Text        ohos:id="$+id:text_result"        ohos:height="match_parent"        ohos:multiple_lines="true"        ohos:text_alignment="center"        ohos:width="match_parent"        ohos:layout_alignment="horizontal_center"        ohos:text="显示结果"        ohos:text_size="40vp"</DirectionalLayout></pre>

 

Get请求实现

在Get的Text点击事件,实现 ​ [Get请求和请求成功之后和请求失败之后(参考 ​ 线程管理开发指导需要将子线程切到Ui线程进行显示数据,代码如下

<pre class="prettyprint hljs JAVA" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">new Component.ClickedListener() {            @Override            public void onClick(Component component) {                OkHttpClient client = new OkHttpClient();                Request.Builder requestBuilder = new Request.Builder();                HttpUrl.Builder urlBuilder=HttpUrl.parse("http://web.juhe.cn/environment/air/cityair").newBuilder();//todo 接口链接                urlBuilder.addQueryParameter("city","shanghai");//todo  参数                urlBuilder.addQueryParameter("Key","******");// todo 密钥 key自己申请                requestBuilder.url(urlBuilder.build());                Call call = client.newCall(requestBuilder.build());                call.enqueue(new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        //todo 失败回调 需要回到主线程显示结果                        getUITaskDispatcher().asyncDispatch(new Runnable() {                            @Override                            public void run() {                                textResult.setText(e.getMessage());                            }                        });                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        if(response.isSuccessful()){                            String result = response.body().string();                            //todo 处理UI需要切换到UI线程处理                            getUITaskDispatcher().asyncDispatch(new Runnable() {                                @Override                                public void</pre>

Post请求实现

在Post的Text实现点击事件,具体参考​ ​Android OkHttp常用详解​,代码如下

<pre class="prettyprint hljs java" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">TextPost.setClickedListener(new Component.ClickedListener() {    @Override    public void onClick(Component component) {        OkHttpClient client = new OkHttpClient();        FormBody body = new FormBody.Builder()                .add("key","*****")// todo 密钥 key自己申请                .add("date","10/1")//todo 日期参数                .build();        Request request = new Request.Builder()                .url("http://v.juhe.cn/todayOnhistory/queryEvent.php")                .post(body)                .build();        Call call = client.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                //todo 失败回调 需要回到主线程显示结果                getUITaskDispatcher().asyncDispatch(new Runnable() {                    @Override                    public void run() {                        textResult.setText(e.getMessage());                    }                });            }            @Override            public void onResponse(Call call, Response response) throws IOException {                if(response.isSuccessful()){                    String result = response.body().string();                    //处理UI需要切换到UI线程处理                    //todo 失败回调 需要回到主线程显示结果                    getUITaskDispatcher().asyncDispatch(new Runnable() {                        @Override                        public void</pre>

运行效果

具体代码如下

java 代码

<pre class="prettyprint hljs java" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">package com.harmony.alliance.myApplication.slice;import com.harmony.alliance.myapplication.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Component;import ohos.agp.components.Text;import okhttp3.*;import java.io.IOException;public class MainAbilitySlice extends AbilitySlice    Text TextGet,TextPost,textResult;    @Override    public void onStart(Intent intent) {        super.onStart(intent);        super.setUIContent(ResourceTable.Layout_ability_main);        TextGet=findComponentById(ResourceTable.Id_text_type_get);        TextPost=findComponentById(ResourceTable.Id_text_type_Post);        textResult=findComponentById(ResourceTable.Id_text_result);        TextGet.setClickedListener(new Component.ClickedListener() {            @Override            public void onClick(Component component) {                OkHttpClient client = new OkHttpClient();                Request.Builder requestBuilder = new Request.Builder();                HttpUrl.Builder urlBuilder=HttpUrl.parse("http://web.juhe.cn/environment/air/cityair").newBuilder();//todo 接口链接                urlBuilder.addQueryParameter("city","shanghai");//todo  参数                urlBuilder.addQueryParameter("Key","6fba58dc50a8e3d92e8a2f63d25c7750");// todo key 密钥                requestBuilder.url(urlBuilder.build());                Call call = client.newCall(requestBuilder.build());                call.enqueue(new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        //todo 失败回调 需要回到主线程显示结果                        getUITaskDispatcher().asyncDispatch(new Runnable() {                            @Override                            public void run() {                                textResult.setText(e.getMessage());                            }                        });                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        if(response.isSuccessful()){                            String result = response.body().string();                            //todo 处理UI需要切换到UI线程处理                            getUITaskDispatcher().asyncDispatch(new Runnable() {                                @Override                                public void run() {                                    textResult.setText(result);                                }                            });                        }                    }                });            }        });        TextPost.setClickedListener(new Component.ClickedListener() {            @Override            public void onClick(Component component) {                OkHttpClient client = new OkHttpClient();                FormBody body = new FormBody.Builder()                        .add("key","7496ca7e5e12c408ef14e465c2bacc79")// todo 密钥                        .add("date","10/1")//todo 日期参数                        .build();                Request request = new Request.Builder()                        .url("http://v.juhe.cn/todayOnhistory/queryEvent.php")                        .post(body)                        .build();                Call call = client.newCall(request);                call.enqueue(new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        //todo 失败回调 需要回到主线程显示结果                        getUITaskDispatcher().asyncDispatch(new Runnable() {                            @Override                            public void run() {                                textResult.setText(e.getMessage());                            }                        });                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        if(response.isSuccessful()){                            String result = response.body().string();                            //处理UI需要切换到UI线程处理                            //todo 失败回调 需要回到主线程显示结果                            getUITaskDispatcher().asyncDispatch(new Runnable() {                                @Override                                public void run() {                                    textResult.setText(result);                                }                            });                        }                    }                });            }        });    }    @Override    public void onActive() {        super.onActive();    }    @Override    public void onForeground(Intent intent) {        super.onForeground(intent);    }}</pre>

xml 代码

<pre class="prettyprint hljs vim" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><?xml version="1.0" encoding="utf-8"?><DirectionalLayout    xmlns:ohos="http://schemas.huawei.com/res/ohos"    ohos:height="match_parent"    ohos:width="match_parent"    ohos:alignment="horizontal_center"    ohos:orientation="vertical">    <Text        ohos:id="$+id:text_type_get"        ohos:height="100vp"        ohos:width="match_parent"        ohos:text_alignment="center"        ohos:layout_alignment="horizontal_center"        ohos:text="Get请求"        ohos:text_size="40vp"    <Text        ohos:id="$+id:text_type_Post"        ohos:height="100vp"        ohos:text_alignment="center"        ohos:width="match_parent"        ohos:background_element="#ed6262"        ohos:layout_alignment="horizontal_center"        ohos:text="Post请求"        ohos:text_size="40vp"    <Text        ohos:id="$+id:text_result"        ohos:height="match_parent"        ohos:multiple_lines="true"        ohos:text_alignment="center"        ohos:width="match_parent"        ohos:layout_alignment="horizontal_center"        ohos:text="显示结果"        ohos:text_size="40vp"</DirectionalLayout></pre>

运行效果如下

 



Tags:鸿蒙   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
准备资料接口准备准备get请求接 Post接口 如何集成在项目级别的build.gradle添加如下代码<pre class="prettyprint hljs nginx" style="padding: 0.5em; font-family: Menlo...【详细内容】
2022-08-05  Tags: 鸿蒙  点击:(0)  评论:(0)  加入收藏
让鸿蒙(安卓)系统手机个性化 远离被监听智能手机已经被称为“最懂我们的人”。我们聊什么,广告就推什么;或者在手机上搜索什么东西,一些应用软件就会给我们自动推荐相关的产品。...【详细内容】
2022-07-30  Tags: 鸿蒙  点击:(13)  评论:(0)  加入收藏
华为在7月27日19:30分,发布了全新的移动操作系统&mdash;&mdash;Harmony3.0。那么关于这个系统都有哪些值得我们关注的新功能,本文我们就来做一个详细的汇总。 1、超级终端去中...【详细内容】
2022-07-28  Tags: 鸿蒙  点击:(24)  评论:(0)  加入收藏
昨晚 19:30,华为举办了 HarmonyOS 3 及华为全场景新品发布会。除了 HarmonyOS 3 系统,一同亮相的新品还有平板、笔记本、智慧屏、耳机、打印机等等。 HarmonyOS 3HarmonyOS 3...【详细内容】
2022-07-28  Tags: 鸿蒙  点击:(33)  评论:(0)  加入收藏
时间来到了今天晚上的7点半,咱们也终于迎来了华为的鸿蒙OS 3.0及全场景新品发布会,这场发布会上可以说是意义非凡,去年发布鸿蒙2.0在经历了一年的成长时间,承受住了市场的考验,鸿...【详细内容】
2022-07-28  Tags: 鸿蒙  点击:(13)  评论:(0)  加入收藏
7月27日19:30华为即将发布万物互联最新操作系统鸿蒙3.0版本,您的华为手机是否马上就可以更新尝鲜了吗? 据华为官方介绍,通过本次更新,HarmonyOS 3 在提升性能的同时,其在交互设计...【详细内容】
2022-07-27  Tags: 鸿蒙  点击:(53)  评论:(0)  加入收藏
华为新一代操作系统&mdash;&mdash;HarmonyOS 3.0将于今晚正式发布,号称“更流畅,更自由,更安全”。对于大家最关注的自己手机能不能升级,是不是在首批升级名单中的问题,今天有了...【详细内容】
2022-07-27  Tags: 鸿蒙  点击:(66)  评论:(0)  加入收藏
IT之家 7 月 24 日消息,华为鸿蒙 HarmonyOS 手机的智慧助手今日迎来了 13.0.0.304 版本更新,带来了多项改进。智慧助手 13.0 版本更新内容如下: 1、增加固定通知入口,目前支持...【详细内容】
2022-07-25  Tags: 鸿蒙  点击:(18)  评论:(0)  加入收藏
目前的市场中产生了很多关于鸿蒙OS 3.0版本的消息,对于使用华为手机的花粉来说,已经开始对新版本产生很高的关注度,并且开始产生了一些展望。因为鸿蒙3.0版本正式官宣之后,市场...【详细内容】
2022-07-20  Tags: 鸿蒙  点击:(22)  评论:(0)  加入收藏
7月份,华为官方传来两大好消息,一个是悄然发布XGAME华为影像品牌,一时间在业内掀起了不小的轰动,华为影像XMAGE的发布,将打造移动影像新标杆。另一个是万众期待的鸿蒙OS 3.0正式...【详细内容】
2022-07-20  Tags: 鸿蒙  点击:(116)  评论:(0)  加入收藏
▌简易百科推荐
准备资料接口准备准备get请求接 Post接口 如何集成在项目级别的build.gradle添加如下代码<pre class="prettyprint hljs nginx" style="padding: 0.5em; font-family: Menlo...【详细内容】
2022-08-05  Java熬夜党    Tags:鸿蒙   点击:(0)  评论:(0)  加入收藏
2022年7月27日晚,华为新品发布会为我们带来了鸿蒙OS 3的许多新功能。其中最值得注意的莫过于最新版本的隐私保护功能。 前不久,滴滴因违反《网络安全法》《数据安全法》《个人...【详细内容】
2022-07-28  坏脾气的磊磊    Tags:HarmonyOS   点击:(15)  评论:(0)  加入收藏
在互联网世界,验证用户身份是一个常见又重要的场景,应用最广泛的方式当属帐号密码验证。随着开发者对身份验证安全性要求不断提升,加之用户更加注重过程中的隐私与便捷,身份验证...【详细内容】
2022-07-26  华为开发者联盟    Tags:HMS   点击:(8)  评论:(0)  加入收藏
IT之家 7 月 24 日消息,华为鸿蒙 HarmonyOS 手机的智慧助手今日迎来了 13.0.0.304 版本更新,带来了多项改进。智慧助手 13.0 版本更新内容如下: 1、增加固定通知入口,目前支持...【详细内容】
2022-07-25  IT之家    Tags:鸿蒙   点击:(18)  评论:(0)  加入收藏
目前的市场中产生了很多关于鸿蒙OS 3.0版本的消息,对于使用华为手机的花粉来说,已经开始对新版本产生很高的关注度,并且开始产生了一些展望。因为鸿蒙3.0版本正式官宣之后,市场...【详细内容】
2022-07-20  智能手机那点事  搜狐号  Tags:鸿蒙OS 3.0   点击:(22)  评论:(0)  加入收藏
由于鸿蒙系统已删除了谷歌框架,但很多小伙伴还是想使用谷歌的一些服务。下面就详细介绍一下怎么在鸿蒙手机上安装谷歌服务框架。(Mate40 Pro实测成功,其他版本可以试一下, 原生...【详细内容】
2022-07-15  ITBang    Tags:谷歌服务框架   点击:(59)  评论:(0)  加入收藏
华为手机的智慧生活估计大家都不陌生,那它到底有什么智慧功能呢?其实华为手机智慧生活可以通过简单的设置,就能控制你家里的电器,非常方便。华为手机通过绑定三方平台账号建立连...【详细内容】
2022-07-08  系统管理员LEE    Tags:鸿蒙   点击:(66)  评论:(0)  加入收藏
根据小编之前有关鸿蒙的文章评论,耗电快是鸿蒙系统遇到的最多的问题。事实上无论是Android还是iOS,如果不能正确使用和对系统进行优化设置,都会出现较为严重的好点情况。下面小...【详细内容】
2022-06-23  史角拾遗    Tags:鸿蒙   点击:(97)  评论:(0)  加入收藏
【手机中国】智能手机早已经成为了我们日常生活中不可或缺的产品,它们或许扮演着生产力工具,或许扮演着娱乐工具也或许扮演着社交工具等各种各样的角色。每个人的手机里也都有...【详细内容】
2022-06-23  手机中国    Tags:HarmonyOS   点击:(36)  评论:(0)  加入收藏
智能手机发展到今天,大家几乎人手一部。 智能手机从功能机发展而来,之所以说它“智能”,是因为它可以安装各种APP,跳出了功能机原本的通信功能,拥有无限的可能性。 但大家又常常...【详细内容】
2022-06-21  中国移动手机俱乐部    Tags:鸿蒙   点击:(78)  评论:(0)  加入收藏
站内最新
站内热门
站内头条