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

最专业的做音乐网站媒体发稿

最专业的做音乐网站,媒体发稿,企业培训内容包括哪些内容,德州市建设街小学官方网站新手刚开始学习harmonyos开发,之前搞安卓开发习惯使用retrofit,结果在三方库中还真搜到了,然后就模拟学习一下。有不对的地方请指点一下。新手新手 oh-package.json5 引入库 retofit 需要使用2.0.1-rc.0 以上版本,修复了retrofit发送网络请…

新手刚开始学习harmonyos开发,之前搞安卓开发习惯使用retrofit,结果在三方库中还真搜到了,然后就模拟学习一下。有不对的地方请指点一下。新手新手

oh-package.json5 引入库

retofit 需要使用2.0.1-rc.0 以上版本,修复了retrofit发送网络请求,响应结果未正常解析的问题。

   "@ohos/retrofit": "2.0.1-rc.0","@ohos/httpclient": "2.0.1-rc.5",

页面使用

@Entry
@Component
struct LoginPage {@State viewModel: LoginViewModel = new LoginViewModel().....省略Button("登录").width("85%").height(50).margin({ top: 65 }).onClick(() => {if (StrUtil.isEmpty(this.viewModel.userName)) {ToastUtil.showToast("请输入用户名")return}if (StrUtil.isEmpty(this.viewModel.password)) {ToastUtil.showToast("请输入密码")return}this.viewModel.getToken()})}

viewmodel使用

@Observed
export class LoginViewModel {userName: string = ""password: string = "".....省略getToken() {let params = new Map<string, undefined>()params["username"] = this.userNameparams["password"] = this.passwordbaseApiRequest<Token>(appService.getToken(params),(result) => {Logger.debug("" + result.accessToken)},//可选参数,可不传{onFailed: (error) => {}, showLoading: true, loadingStr: "zzzzzzz"})}
}

定义接口

@BasePath("/")
export class AppService extends BaseService {@GET("szy/uaa/oauth/token")async getToken(@QueryMap params: Map<string, undefined>): Promise<Response<ApiResponse<Token>>> {return {} as Response<ApiResponse<Token>>}
}

httpclient 拦截器

export class LoggingInterceptor implements Interceptor {async intercept(chain: Chain): Promise<Response> {try {let request = chain.requestI()let requestBody: RequestBody = request.bodylet url = request.url as HttpUrlconst connectResponse = await chain.proceedI(chain.requestI())let startMessage = `-->${request.method} ${url.url} ${connectResponse.protocol ?? ''}`let contentType: string = requestBody.contentlet endMessage = `--> END ${request.method}`LoggerUtils.debug("添加日志拦截器")LoggerUtils.debug(`Headers:${JSON.stringify(request.headers)}`)LoggerUtils.debug("httpStart = " + startMessage)LoggerUtils.debug("contentType = " + contentType)LoggerUtils.debug("Response = " + connectResponse.result)LoggerUtils.debug("httpEnd = " + endMessage)return connectResponse} catch (error) {LoggerUtils.debug("添加日志拦截器 失败")return new Promise<Response>((resolve, reject) => {let request = chain.requestI()let response = chain.proceedI(request)response.then((data) => {resolve(data)}).catch((err: Error) => {reject(err)});})}}
}

RetrofitApi.ets简单封装

import { HttpClient, IOException, TimeUnit } from '@ohos/httpclient'
import { Response, ServiceBuilder } from '@ohos/retrofit'
import { ToastUtil } from '@pura/harmony-utils'
import { NetworkConstants } from '../../common/NetworkConstants'
import { ApiResponse } from './ApiResponse'
import { AppService } from './AppService'
import { HeaderInterceptor } from './HeaderInterceptor'
import { LoggingInterceptor } from './LoggingInterceptor'
import { DialogUtils } from '../../common/DialogUtils'let client: HttpClient = new  HttpClient.Builder().setConnectTimeout(15, TimeUnit.SECONDS).setReadTimeout(15, TimeUnit.SECONDS).addInterceptor(new LoggingInterceptor()).addInterceptor(new HeaderInterceptor()).build()export const appService = new ServiceBuilder().setEndpoint(NetworkConstants.BASE_URL).setClient(client).build(AppService)/*** 可选参数*/
interface ApiParams {onFailed?: (error: ResourceStr) => void,showLoading?: boolean,loadingStr?: string
}export function baseApiRequest<T>(apiCall: Promise<Response<ApiResponse<T>>>,onSuccess: (result: T) => void,param?: ApiParams,
) {if (param?.showLoading) {DialogUtils.showLoading(param.loadingStr)}apiCall.then((result: Response<ApiResponse<T>>) => {if (result.isSuccessful() && result.code() == 200 && result.result.success) {onSuccess(result.result.data)} else {ToastUtil.showToast(result.result.message)if (param?.onFailed) {param.onFailed(result.result.message)}}DialogUtils.dismiss()}).catch((error: Error) => {if (error as IOException) {if (param?.onFailed) {param.onFailed('error = ' + error)}} else {if (param?.onFailed) {param.onFailed(error.message)}}ToastUtil.showToast(error.message)DialogUtils.dismiss()})
}

http://www.15wanjia.com/news/179266.html

相关文章:

  • 广西玉林建设厅官方网站大宗贸易交易平台
  • 如何接单做网站网站建设 提供源码
  • 天津网站建设培训学校有没有好用的网站推荐
  • 完整的app网站开发什么网站可以免费做视频
  • 美容网站设计百度做网站的特点
  • net网站阿里云主机配置国际热点新闻最新消息
  • 网站设计规划书例子最牛的大型网站建设公司
  • 横岗网站设计安康市建设银行网站
  • 深圳网站设计哪家比较好如何做静态页网站
  • 爱站网 关键词挖掘工具站长工具七牛图片水印 wordpress
  • 建网站平台要多少钱赵公口网站建设公司
  • 大连网络推广网站优化找哪家好石家庄网站seo顾问
  • 模板建站是什么项目logo生成器
  • 建设银行咸阳缴费网站合肥软件开发网站建设
  • 网站开发参考文献广州市数商云
  • 网站流量高iis如何做负载均衡重庆网站seo好不好
  • 国内无版权图片网站做网站的要到处跑吗
  • 想做网站多少钱公司做网站一般多少钱运营
  • 产品销售网站模板wordpress修改图片
  • 个人做网站开发指标龙岗中学
  • 百度站长收录入口包装印刷
  • 哪些网站容易做seo优化网站设计抄袭
  • 快印店网站建设84wzjs山东省住房和城乡建设局网站首页
  • 制作英文网站多少钱注册城乡规划师值钱吗
  • 萍缘网站建设工作网站 防采集
  • 建设银行住房公积金卡网站网站开发与维护专业要学什么
  • 深圳网站建设公司信任湖南岚鸿信 赖学做家常菜去那个网站
  • 海淀区社区建设网站wordpress写的网站
  • 广州婚恋网站排名网站建设项目进度汇报
  • 外贸网站翻墙做广告水果网站建设