当前位置: 首页 > news >正文

开源 Arkts 鸿蒙应用 开发(十)通讯--Http

 文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

 相关链接:

开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客

开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客

开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客

开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-CSDN博客

开源 Arkts 鸿蒙应用 开发(六)数据持久--文件和首选项存储-CSDN博客

开源 Arkts 鸿蒙应用 开发(七)数据持久--sqlite关系数据库-CSDN博客

开源 Arkts 鸿蒙应用 开发(八)多媒体--相册和相机-CSDN博客

开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端-CSDN博客

开源 Arkts 鸿蒙应用 开发(十)通讯--Http-CSDN博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

https://blog.csdn.net/ajassi2000/article/details/149584283?spm=1011.2124.3001.6209开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

本章内容主要是通过Http访问web网站,获得天气的Json数据,进行解析的功能。将访问的页面地址进行修改,添加id和key则可以访问网站的Api,实现高级功能。

一、添加权限,与上个章节相同,在module.json5的最后添加上以下代码

 "requestPermissions": [{"name": "ohos.permission.INTERNET"}]

二、Index.ets代码

要点:

1.  网上有各种网络API,通常的方式是访问地址和id以及key,通过注册可以获得id和key,访问网址就可以获得输入,比如https://xxx/now?&id=CN101010100&key=xxxxx

2.  关键流程:创建HTTP实例, 发起GET请求,处理响应(HTTP状态码非200为出错需要处理)

https://www.weather.com.cn/data/sk/101010100.html地址页面图片

下面为代码

import http from '@ohos.net.http';
import promptAction from '@ohos.promptAction';
import webview from '@ohos.web.webview';// 定义天气信息的接口类型
interface WeatherInfo {city: string;cityid: string;temp: string;WD: string;WS: string;SD: string;WSE: string;time: string;isRadar: string;Radar: string;njd: string;qy: string;rain: string;
}interface WeatherResponse {weatherinfo: WeatherInfo;
}@Entry
@Component
struct HttpExample {@State responseData: string = '等待获取数据...';@State webController: webview.WebviewController = new webview.WebviewController();@State weatherInfo: WeatherInfo | null = null;build() {Column() {// 显示获取到的网页内容Scroll() {Column() {Text(this.responseData).fontSize(16).width('100%').textAlign(TextAlign.Start).padding(10)// 添加天气信息显示区域if (this.weatherInfo) {Divider().margin(10)Text('解析后的天气数据:').fontSize(18).fontWeight(FontWeight.Bold).margin({ bottom: 10 })Text(`城市: ${this.weatherInfo.city}`).fontSize(16).margin({ bottom: 5 })Text(`温度: ${this.weatherInfo.temp}°C`).fontSize(16).margin({ bottom: 5 })Text(`风向: ${this.weatherInfo.WD}`).fontSize(16).margin({ bottom: 5 })Text(`风力: ${this.weatherInfo.WS}`).fontSize(16).margin({ bottom: 5 })Text(`湿度: ${this.weatherInfo.SD}`).fontSize(16).margin({ bottom: 5 })Text(`气压: ${this.weatherInfo.qy} hPa`).fontSize(16).margin({ bottom: 5 })Text(`更新时间: ${this.weatherInfo.time}`).fontSize(16).margin({ bottom: 5 })}}.width('100%')}.height('80%').width('100%')// 请求按钮Button('获取天气数据').width('80%').height(50).margin(20).onClick(() => {this.fetchWeatherData();})}.width('100%').height('100%')}// 发起HTTP请求private fetchWeatherData() {let httpRequest = http.createHttp();this.responseData = '正在请求数据...';this.weatherInfo = null;httpRequest.request('https://www.weather.com.cn/data/sk/101010100.html',{method: http.RequestMethod.GET,header: {'Content-Type': 'application/json'}},(err, data) => {if (err) {this.responseData = `请求失败: ${JSON.stringify(err)}`;promptAction.showToast({ message: '请求失败', duration: 2000 });return;}if (data.responseCode === 200) {try {const result: WeatherResponse = JSON.parse(data.result.toString());//this.responseData = `HTTP状态码: ${data.responseCode}\n\n原始JSON数据:\n${JSON.stringify(result, null, 2)}`;this.responseData = data.result.toString();if (result.weatherinfo) {this.weatherInfo = result.weatherinfo;}promptAction.showToast({ message: '获取并解析成功', duration: 2000 });} catch (e) {this.responseData = `JSON解析失败: ${e.message}\n\n原始数据:\n${data.result}`;promptAction.showToast({ message: 'JSON解析失败', duration: 2000 });}} else {this.responseData = `请求异常: HTTP状态码 ${data.responseCode}`;promptAction.showToast({ message: '请求异常', duration: 2000 });}});}
}

三、最终效果


文章转载自:
http://tamper .dxwdwl.cn
http://galactin .dxwdwl.cn
http://unilateralization .dxwdwl.cn
http://bodysurf .dxwdwl.cn
http://sermonette .dxwdwl.cn
http://beret .dxwdwl.cn
http://dichlorodiethyl .dxwdwl.cn
http://menthol .dxwdwl.cn
http://opulence .dxwdwl.cn
http://piedfort .dxwdwl.cn
http://matted .dxwdwl.cn
http://liquidation .dxwdwl.cn
http://nepheline .dxwdwl.cn
http://mattamore .dxwdwl.cn
http://gherao .dxwdwl.cn
http://combinatorics .dxwdwl.cn
http://condonement .dxwdwl.cn
http://tardamente .dxwdwl.cn
http://spitchcock .dxwdwl.cn
http://raisonneur .dxwdwl.cn
http://lombok .dxwdwl.cn
http://bisulfite .dxwdwl.cn
http://abetter .dxwdwl.cn
http://compactly .dxwdwl.cn
http://trophic .dxwdwl.cn
http://smarmy .dxwdwl.cn
http://telepathist .dxwdwl.cn
http://theopathic .dxwdwl.cn
http://forester .dxwdwl.cn
http://thank .dxwdwl.cn
http://www.dtcms.com/a/293729.html

相关文章:

  • 腾讯云推出CodeBuddy:革新AI全栈开发体验
  • 第六章 W55MH32 UDP Multicast示例
  • 神经架构搜索革命:从动态搜索到高性能LLM的蜕变之路
  • AI 搜索引擎:让信息“长脑子”而不是“堆数据”
  • 解决 i.MX6ULL 通过 ADB 连接时权限不足问题 not in the plugdev group
  • 网络调制技术对比表
  • Numpy 库 矩阵数学运算,点积,文件读取和保存等
  • 线段树学习笔记 - 练习题(1)
  • iOS 性能监控 苹果手机后台运行与能耗采样实战指南
  • 沉浸式文旅新玩法-基于4D GS技术的真人数字人赋能VR体验升级
  • 深度相机---像素转物理尺寸
  • 【基于OpenCV的图像处理】图像预处理之二值化处理以及图像的仿射变换
  • 基于Python flask的常用AI工具功能数据分析与可视化系统设计与实现,技术包括LSTM、SVM、朴素贝叶斯三种算法,echart可视化
  • linxu CentOS 配置nginx
  • 字节 AI 编辑器 Trae 2.0 SOLO 出道! 国际版不充分指南及与国内版的对比
  • 【web页面接入Apple/google/facebook三方登录】
  • 精准扫描,驱动未来:迁移科技3D视觉系统在工业自动化中的革命性应用
  • MySQL 链接方法思考
  • 【前端】ikun-pptx编辑器前瞻问题三: pptx的图片如何提取,并在前端渲染。
  • 【LeetCode 热题 100】78. 子集——(解法三)位运算
  • (46)elasticsearch-华为云CCE无状态负载部署
  • Vite 6 到 Vite 7 的迁移指南,常见问题和解决方案
  • Linux驱动-中断-工作队列传参
  • mysql中varchar可以放多少个中文字符?
  • shiro的SecurityUtils.getSubject() 使用说明
  • 【按下电源键后,电脑里发生了什么?——BIOS:启动世界的“第一把钥匙”】
  • AI产品经理面试宝典第49天:智能客服、教育产品与医疗应用设计题相关解析
  • 深入解析Sqoop数据导入的并行切分机制与主键分区算法
  • AM1.5G AAA稳态太阳光模拟器特点
  • 西安电子科技大学金融学431考研经历分享