美文网首页
鸿蒙~Http数据请求 和服务端通信(一) : 自定义http请

鸿蒙~Http数据请求 和服务端通信(一) : 自定义http请

作者: 胡修波 | 来源:发表于2023-12-27 07:54 被阅读0次

一 web server 端 :

采用go语言 ,gin框架

package main

import (
    "github.com/gin-gonic/gin"
    "log"
)

func main() {
    r := gin.Default()
    r.GET("/user", func(context *gin.Context) {
        //map 数组
        context.JSON(200, gin.H{
            "name":  "鸿蒙开发测试",
            "title": "beijing",
        })
    })
    err := r.Run(": 8080")
    if err != nil {
        log.Fatalln(err.Error())
    }
}

二 鸿蒙端

微信图片_20231227220056.png
  • 1、 网络请求 HttpUtil.ets 文件
import { ResponseResult, UserInfo } from '../viewmodel/UserViewModel';
import http from '@ohos.net.http';

export function httpRequest(url: string): Promise<ResponseResult> {
  let httpRequest = http.createHttp();

  let responseResult = httpRequest.request(url, {
    method: http.RequestMethod.GET,
    readTimeout: 10000,
    header:{
      'Content-Type': 'application/json'
    },
    connectTimeout: 10000,
    extraData: {}
  });

  let serverData: ResponseResult = new ResponseResult();

  return responseResult.then((value: http.HttpResponse) => {
    if (value.responseCode === 200) {
      console.info("huxiubo", `response:${JSON.stringify(value)}`);
      let result = `${value.result}`;
      let resultJson: UserInfo = JSON.parse(result);

      serverData.code = 200
      serverData.type = 0
      serverData.data = resultJson
    } else {

      serverData.data = `Failed`;
    }
    return serverData;
  }).catch(() => {
    serverData.data = "error"
    return serverData;
  })

}
  • 2、viewModel 层 UserViewModel.ets
import { httpRequest } from '../common/HttpUtil';

const TAG = "huxiubo"
export class UserViewModel {
  getUserInfo() : Promise<UserInfo> {
    return new Promise((resolve: Function) => {
       let url = "http://192.168.0.169:8080/user"
       httpRequest(url)
         .then((data: ResponseResult) => {
            if (data.code === 200) {
              console.info(TAG, `200: ${data.data} `);
              resolve(data.data)
            } else {
               console.info(TAG, `failed else `);
            }
         })
         .catch((err) => {
           console.info(TAG, `catch failed :${JSON.stringify(err)}}`);
         })
     }
    )
  }
}


export class UserInfo {
  title: string = ""
  name: string = ""
  // age: number = 0
  // imageUrl : string = ""
}

export class ResponseResult {
  code : number;
  type: number;
  data : string | Object | ArrayBuffer;

  constructor() {
    this.code = -1
    this.type = -1
    this.data = null
  }

}

let userViewModel = new UserViewModel();
export default userViewModel as UserViewModel;
  • 3、view层 请求 ChildLayout.ets
import userViewModel, { UserInfo } from '../viewmodel/UserViewModel'

@Component
export struct ChildView {
  @State userInfo:UserInfo = new UserInfo();
  aboutToAppear() {
    console.info("huxiubo", `aboutToAppear====`);

    userViewModel.getUserInfo().then((info: UserInfo) => {
      console.info("huxiubo", `aboutToAppear++++++ :${info}`);
      console.info('huxiubo', `200: ${info.title} `);
      //
      this.userInfo = info
    })
      .catch((err) => {
        console.info("huxiubo", `err :${JSON.stringify(err)}`);

      })
  }
  build() {
    Column() {
      Text(`title:${this.userInfo.title}`)
      Text(`name:${this.userInfo.name}`)
    }
    .size({width: '100%', height: '100%'})
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
  }
}
  • 4、UI入口
import { ChildView } from '../view/ChildLayout'

@Entry
@Component
struct Index {
  build() {
    Row() {
       ChildView()
    }
    .width('100%')
    .height('100%')
  }
}

相关文章

  • 从前端开始的全链路优化

    减少http请求http请求每次都需要建立通信链路,进行数据传输,在服务端每个http都需要启动独立的线程去处理,...

  • 【HTTP】HTTP请求

    1、HTTP协议通信流程: 2、HTTP请求包含内容 一个HTTP请求报文由请求行(request line)、请...

  • 零基础学习接口测试-HTTP消息结构

    一、HTTP请求/响应报文 1、HTTP通信过程: 客户端发送请求给服务端,服务端返回响应给客户端。 2、报文: ...

  • ajax,本地存储

    ajax 发送http请求ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。...

  • HTTP详细解析

    一、特点 简单快速:客户端与服务端通信,只需要传送请求方式和请求路径即可;HTTP协议简单,因此HTTP服务器的程...

  • 2、简单的http协议

    http协议用户客户端和服务端之间的通信 通过请求和响应的交换达成通信 http是不保存状态的协议 http是一种...

  • Https学习

    Http与Https的区别 简单的讲,Http协议的客户端和服务端通信采用的是明文(post请求也只是将数据放在h...

  • C2 简单的HTTP协议

    1.HTTP协议用于客户端和服务端之间的通信 2.HTTP协议规定,请求从客户端发出,最后服务端响应该请求并返回。...

  • 简单的HTTP协议

    HTTP协议用于客户端和服务端之间的通信: 客户端与服务端:(请求->处理->响应) 请求报文是由请求方法、请求 ...

  • TCP/HTTP/Socket

    HTTP和Scoket通信的区别。 http是客户端用http协议进行请求,发送请求时候需要封装http请求头,并...

网友评论

      本文标题:鸿蒙~Http数据请求 和服务端通信(一) : 自定义http请

      本文链接:https://www.haomeiwen.com/subject/lgtrndtx.html