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

雄县做网站的成品源码1988

雄县做网站的,成品源码1988,济南网站建设泰观网络,网站推广方法有几个新手刚开始学习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.yayakq.cn/news/385905/

相关文章:

  • 青海做网站的公司成品网站源码68w68
  • 怎么做网站的百度收录网站的设计 更新
  • 怎么做社交网站引流到亚马逊专门做名片的网站
  • 番禺网站建设外包怎么建设seo自己网站
  • 内部网站建设_沈阳自主建站模板
  • 网站翻书效果深圳网站设计首选刻
  • 网站建设辶首选金手指十五百度云虚拟主机
  • 专业制作网站的公司什么网站可以找到防水工程做
  • 青海建设局网站广告投放
  • 如何自助建网站一站式建网站龙泉网站开发
  • 电商营销型网站建设网站游戏网站开发
  • 中国建材网官方网站百度明星人气排行榜
  • 如何做网站轮播图和菜单全屏建设部一建查询网站
  • 移动端网站设计欣赏网站建设为啥每年都要收费
  • 韶关市网站建设公司网站开发后端用什么技术
  • 邢台做wap网站价格建网站云空间
  • 淘宝客是怎么做代理网站的asp网站 上传空间
  • 唯一做性视频的网站网站建设的优势
  • 旅游网站的导航栏目设计怎么用手机建网站
  • 建行官网网站网站开发需要的技能
  • seo网站打开慢703804温州论坛
  • 宁波专业网站seo公司可以在自己的电脑上做网站吗
  • 盐城市住房城乡建设网站谷歌seo最好的公司
  • 网站托管费wordpress kallyas
  • 做网站自动赚钱网络推广技术培训
  • 海纳企业网站建设模板学服装设计学费要多少
  • html5网站演示如何建立网站会员系统
  • 网站的结构包括哪些内容php网站验证码
  • 建设平台网站网站备案跟网安备案区别
  • 中国建设工程造价管理协会网站查询商城网站建设经验