HarmonyOS鸿蒙Next中axios请求

HarmonyOS鸿蒙Next中axios请求 我这边在请求拦截器里打印requestdata里面的内容是有值

但是request打印出来data却为空

日志为:

com.scrcu...rHarmony I 请求头是这个txnBody123::::::::::: UUqOkp8W7fjGh/WTXIRO0q8Oi4anm3AmlofBoZ3Fa95LHPKDP+i9cCN+EDD1Ve9H+FSUpX+BCyOuEynwTXyTq4XTFPuWaqVlaj+nV81r1mpk1xLKVhhP7CF69hAq3PQXAn3Rs8jk8gl+bhLQ716S7B3jIJppdiSkZ6F1lP5Q8dg=
05-29 09:25:01.644 7259-7259 A03D00/JSAPP com.scrcu...rHarmony I 请求头是这个txnHeaderInfo456::::::::::: eyJub25jZVN0ciI6IjIwMjQwNTI4MTkwMzQzNDM5MDkxMzQxNDE2NzMxOTAwIiwidHhuVG0iOiIyMDI0MDUyODE5MDM0MyIsIm9zVmVyc2lvbiI6InBob25lL0hVQVdFSS9IVUFXRUkvQUxOLzMuMC4wLjIyKENhbmFyeTMpL0FMTi1BTDAwL0FMTi1BTDAwLzEyL2RlZmF1bHQvZGVmYXVsdCIsImFwcFZlcnNpb24iOiIxLjAuMCIsImFwcENobE5vIjoiMDQiLCJ0eG5Db2RlIjoiNTA0IiwiY2hsTm8iOiI1MDQiLCJzaWduQXR1cmUiOiJiUnlHUXlNMFZScnVVRk1wWDJmYmFHTEdpdDFWTDZPaHAvUVRmQlhTdGZyZzljSG5XenovTkVVQVIzbXJOc3ZQdUhNaFFoKzJ2ZnRFUXVhOFhTL3BHR3FiWVVJNGlwdFFKWEtEcHo1NFExNlp6L2wxVERJa3N2bUZ1WTBqS1o3TE1jamV4MHNiWFdKbENLSHRWa1JWbTVVb3hSV2VENjJuWFV6WVZ4Y2k2WXM9IiwiZHZJbWVpIjoiNjcyYjNhMzEtMTA2Zi00Njg3LWEyODYtYWI2Yjg1MWE5ZTI5IiwidHhuQm9keSI6IlVVcU9rcDhXN2ZqR2gvV1RYSVJPMHE4T2k0YW5tM0FtbG9mQm9aM0ZhOTVMSFBLRFAraTljQ04rRUREMVZlOUgrRlNVcFgrQkN5T3VFeW53VFh5VHE0WFRGUHVXYXFWbGFqK25WODFyMW1wazF4TEtWaGhQN0NGNjloQXEzUFFYQW4zUnM4ams4Z2wrYmhMUTcxNlM3QjNqSUpwcGRpU2taNkYxbFA1UThkZz0iLCJvc1R5cGUiOiIwMSJ9
05-29 09:25:01.644 7259-7259 A03D00/JSAPP com.scrcu...rHarmony I 请求内容为789:::::::: {"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":["ohos"],"transformRequest":[null],"transformResponse":[null],"timeout":1000,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{"Blob":null},"headers":{"Accept":"application/json, text/plain, */*","X-Custom-Header":"foobar"},"baseURL":"https://****.****.***:8080/SOA/","data":{},"url":"504.504001","method":"post","params":{}}

代码为:

let requestDic123 = new HashMap<string , string>()
requestDic123.set('txnBody' , 'UUqOkp8W7fjGh/WTXIRO0q8Oi4anm3AmlofBoZ3Fa95LHPKDP+i9cCN+EDD1Ve9H+FSUpX+BCyOuEynwTXyTq4XTFPuWaqVlaj+nV81r1mpk1xLKVhhP7CF69hAq3PQXAn3Rs8jk8gl+bhLQ716S7B3jIJppdiSkZ6F1lP5Q8dg=')
requestDic123.set('txnHeaderInfo' ,'eyJub25jZVN0ciI6IjIwMjQwNTI4MTkwMzQzNDM5MDkxMzQxNDE2NzMxOTAwIiwidHhuVG0iOiIyMDI0MDUyODE5MDM0MyIsIm9zVmVyc2lvbiI6InBob25lL0hVQVdFSS9IVUFXRUkvQUxOLzMuMC4wLjIyKENhbmFyeTMpL0FMTi1BTDAwL0FMTi1BTDAwLzEyL2RlZmF1bHQvZGVmYXVsdCIsImFwcFZlcnNpb24iOiIxLjAuMCIsImFwcENobE5vIjoiMDQiLCJ0eG5Db2RlIjoiNTA0IiwiY2hsTm8iOiI1MDQiLCJzaWduQXR1cmUiOiJiUnlHUXlNMFZScnVVRk1wWDJmYmFHTEdpdDFWTDZPaHAvUVRmQlhTdGZyZzljSG5XenovTkVVQVIzbXJOc3ZQdUhNaFFoKzJ2ZnRFUXVhOFhTL3BHR3FiWVVJNGlwdFFKWEtEcHo1NFExNlp6L2wxVERJa3N2bUZ1WTBqS1o3TE1jamV4MHNiWFdKbENLSHRWa1JWbTVVb3hSV2VENjJuWFV6WVZ4Y2k2WXM9IiwiZHZJbWVpIjoiNjcyYjNhMzEtMTA2Zi00Njg3LWEyODYtYWI2Yjg1MWE5ZTI5IiwidHhuQm9keSI6IlVVcU9rcDhXN2ZqR2gvV1RYSVJPMHE4T2k0YW5tM0FtbG9mQm9aM0ZhOTVMSFBLRFAraTljQ04rRUREMVZlOUgrRlNVcFgrQkN5T3VFeW53VFh5VHE0WFRGUHVXYXFWbGFqK25WODFyMW1wazF4TEtWaGhQN0NGNjloQXEzUFFYQW4zUnM4ams4Z2wrYmhMUTcxNlM3QjNqSUpwcGRpU2taNkYxbFA1UThkZz0iLCJvc1R5cGUiOiIwMSJ9')

return HttpRequest.request({
  url : '504.504001',
  method:'post',
  params: requestDic123,
  data:requestDic123
})

基类:

export const HttpRequest = axios.create({
  baseURL: 'https://**.****:8080/SOA/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'},
});

更多关于HarmonyOS鸿蒙Next中axios请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

demo如下:

postMethod() {

  let postUrl: string = 'http://***.***:8848/checkParams';

  let simpleForm: rcp.FormFields = {};

  simpleForm['txnBody'] = "XXX";

  simpleForm['txnHeaderInfo'] = "xxx"

  let rcpSession: rcp.Session = rcp.createSession();

  let result = rcpSession.post(postUrl, simpleForm)

  result.then((res) => {

    console.log('res: ' + JSON.stringify(res))

    if (res.body) {

      let re = this.ArrayBuffer2String(res.body)

      console.log('re: ' + re)

    }
  }).catch((err: BusinessError) => {

    console.error(`err: err code is ${err.code}, err message is ${err.message}`);

  });
 }

 ArrayBuffer2String(buf: ArrayBuffer) {

  const decoder = util.TextDecoder.create("utf-8");

  const str = decoder.decodeWithStream(new Uint8Array(buf));

  return str;
}

simpleForm支持动态增减入参对象。请求到后台后,Java侧可以使用IOUtils.toString(request.getReader())解析出响应参数

更多关于HarmonyOS鸿蒙Next中axios请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,axios请求可以通过使用@ohos.net.http模块来实现。@ohos.net.http是鸿蒙系统提供的网络请求库,支持HTTP和HTTPS协议的请求。以下是使用@ohos.net.http进行GET请求的示例代码:

import http from '@ohos.net.http';

// 创建http请求对象
let httpRequest = http.createHttp();

// 发起GET请求
httpRequest.request(
  "https://api.example.com/data", 
  {
    method: http.RequestMethod.GET,
    header: {
      'Content-Type': 'application/json'
    }
  }, (err, data) => {
    if (err) {
      console.error(`Request failed, code is ${err.code}, message is ${err.message}`);
    } else {
      console.info(`Request success, data is ${data.result}`);
    }
  }
);

在上述代码中,http.createHttp()用于创建一个HTTP请求对象,httpRequest.request()用于发起请求。请求方法可以通过method参数指定,本例中使用了http.RequestMethod.GET。请求头可以通过header参数设置,返回结果在回调函数中处理。

对于POST请求,只需将method参数改为http.RequestMethod.POST,并在extraData参数中传递请求体数据。

在HarmonyOS鸿蒙Next中,使用axios进行网络请求时,首先需确保已安装axios库。创建请求时,可使用axios.getaxios.post等方法,并传入URL和配置参数。处理响应时,通过.then获取数据,.catch捕获错误。注意,鸿蒙系统对网络权限有严格要求,需在config.json中配置相应权限。以下是示例代码:

import axios from 'axios';

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

确保网络权限配置正确,以保证请求成功执行。

回到顶部