赞
踩
温馨提示:使用第三方库,必须安装ohpm和环境变量配置,上面的官方教程有详细的说明
详细教程请看上面的官方文档
ohpm install @ohos/axios
网络权限,只要涉及到网路模块,都得添加网络权限,官方指南教程:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/declare-permissions-V5
在module.json5中添加网络权限
"requestPermissions": [
{
'name': 'ohos.permission.INTERNET'
}
],
// 发送一个get请求
axios<string, AxiosResponse<string>, null>({
method: "get",
url: 'https://www.xxx.com/info'
}).then((res: AxiosResponse) => {
console.info('result:' + JSON.stringify(res.data));
}).catch((error: AxiosError) => {
console.error(error.message);
})
/**
* 获取最近热门电影
*/
getMovieListData() {
axios<string, AxiosResponse<string>, null>({
method: "get",
url: 'https://movie.douban.com/j/search_subjects?type=movie&tag=热门&page_limit=50&page_start=0'
}).then((res: AxiosResponse) => {
this.movieInfo = res.data
}).catch((error: AxiosError) => {
console.error(error.message);
})
}
import axios, { AxiosError, AxiosResponse } from '@ohos/axios'; import { MovieInfo, MovieInfoItem } from '../entity/MovieInfo'; @Entry @Component struct HomePage{ @State movieInfo: MovieInfo = { subjects: [] } aboutToAppear(): void { this.getMovieListData() } /** * 获取最近热门电影 */ getMovieListData() { axios<string, AxiosResponse<string>, null>({ method: "get", url: 'https://movie.douban.com/j/search_subjects?type=movie&tag=热门&page_limit=50&page_start=0' }).then((res: AxiosResponse) => { this.movieInfo = res.data }).catch((error: AxiosError) => { console.error(error.message); }) } build() { Column() { //标题栏 Text('首页') .fontWeight(700) .fontSize(28) .width('100%') .padding({ left: 10 }) Scroll() { Column() { //轮播图 Swiper() { Image("https://img2.baidu.com/it/u=3119334893,112907213&fm=253&fmt=auto&app=138&f=JPEG?w=1333&h=500") .height(120).width('100%') Image('https://img1.baidu.com/it/u=2208322220,3046896965&fm=253&fmt=auto&app=138&f=JPEG?w=1280&h=500') .height(120).width('100%') Image('https://img1.baidu.com/it/u=3642384699,1397016578&fm=253&fmt=auto&app=138&f=JPEG?w=1476&h=500') .height(120).width('100%') Image('https://img1.baidu.com/it/u=3953008485,1470810916&fm=253&fmt=auto&app=138&f=JPEG?w=1280&h=400') .height(120).width('100%') }.loop(true) .margin(10) .autoPlay(true) .borderRadius(10) Text('最近热门电影') .fontWeight(700) .fontSize(17) .width('100%') .margin({ left: 10, top: 20 }) .padding({ left: 6 })//设置左边框 .borderWidth({ left: 4 }) .borderColor('#e22418') //电影列表,网格布局 Grid() { ForEach(this.movieInfo.subjects, (item: MovieInfoItem) => { GridItem() { Column() { Image(item.cover) .height(140) .width('100%') .objectFit(ImageFit.Cover) Text(item.title) .fontSize(13) .margin({ top: 6 }) .textOverflow({ overflow: TextOverflow.Clip }) .maxLines(1) //一般情况下textOverflow和maxLines配合一起使用 }.width('100%') }.onClick(() => { }) }) } .columnsTemplate('1fr 1fr 1fr') .margin({ top: 20 }) .columnsGap(10) .rowsGap(10) .margin(10) } .width('100%') } } .width('100%') .height('100%') } }
上面代码中,获取网络数据的方法,在生命周期的aboutToAppear()函数中调用
在项目ets下新建entity文件夹,存放数据实体类,如下图所示:
export class MovieInfo { subjects: Array<MovieInfoItem> =[] } export class MovieInfoItem { episodes_info: string = '' rate: string = '' cover_x: string = '' title: string = '' url: string = '' playable: boolean = false cover: string = '' id: string = '' cover_y: string = '' is_new: string = '' }
温馨提示:1. 必须安装ohpm包管理器 2. 必须安装axios依赖 3. 必须添加网络权限
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。