HarmonyOS 鸿蒙Next axios怎么设置多个cookie

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next axios怎么设置多个cookie

axios怎么设置多个cookie

2 回复
import axios from '[@ohos](/user/ohos)/axios'
import { AxiosError } from '[@ohos](/user/ohos)/axios';
import { InternalAxiosRequestConfig } from '[@ohos](/user/ohos)/axios';
import { AxiosResponse } from '[@ohos](/user/ohos)/axios';
import { AxiosStatic } from '[@ohos](/user/ohos)/axios';
import { ArrayList, HashMap } from '@kit.ArkTS';
export class AxiosUtil {
  public static requestHeader: HashMap<string, string[]> = new HashMap();
  /**
   * 获取默认的axios对象
   * [@returns](/user/returns) AxiosStatic
   */
  private static getAxios(): AxiosStatic {
    const context = axios.create({
      baseURL: 'http://10.234.196.126:8080',
      timeout: 10000
    });
    return context as AxiosStatic;
  }
  /**
   * 封装后的全局axios对象
   */
  efAxios = AxiosUtil.getAxios();
}
/**
 * 抛出封装后的axios
 */
export const efAxios = new AxiosUtil().efAxios;
/**
 * 设置统一的请求拦截
 */
efAxios.interceptors.request.use(async (config: InternalAxiosRequestConfig) => {
  let cookie = AxiosUtil.requestHeader.get('Cookie')
  let cookieStr = ''
  if (cookie != undefined) {
    console.info("======:"+cookie[0])
    cookie.forEach((eachCookie)=>{
      console.log('==eachCookie:'+eachCookie)
      cookieStr+=eachCookie+';'
    })
    config.headers.set({'Cookie': 'cookie1=value1; cookie2=value2; cookie3=value3'})
  }
  console.log('==SY=='+cookieStr)
  // config.headers.set({'Cookie': cookieStr})
  console.log('config.headers:'+JSON.stringify(config.headers));
  return config;
}, (error: AxiosError) => {
  // 对请求错误做些什么
  return Promise.reject(error);
})
/**
 * 设置统一的响应拦截
 */
efAxios.interceptors.response.use(async (response: AxiosResponse) => {
  AxiosUtil.requestHeader.set('Cookie',response.headers['set-cookie'])
  console.error('response.headers.set-cookie:===>'+response.headers['set-cookie']);
  // 处理响应数据
  return response;
}, (error: AxiosError) => {
  // 对响应错误做点什么
  return Promise.reject(error);
});

在HarmonyOS鸿蒙系统中,使用axios设置多个cookie通常与在标准Web开发环境中的方法一致。axios本身并不直接处理cookie,而是通过配置请求头(headers)中的Cookie字段来实现。以下是一个设置多个cookie的示例:

  1. 安装axios(如果尚未安装): 确保你的项目中已经安装了axios库。如果未安装,可以使用npm或yarn进行安装。

    npm install axios
    
  2. 设置多个cookie: 在发起请求时,通过配置axios的headers选项来设置多个cookie。cookie之间使用分号和空格(;)分隔。

    const axios = require('axios');
    
    const config = {
      headers: {
        'Cookie': 'cookie1=value1; cookie2=value2; cookie3=value3'
      }
    };
    
    axios.get('https://example.com/api', config)
      .then(response => {
        console.log(response.data);
      })
      .catch(error => {
        console.error('Error:', error);
      });
    

请注意,cookie的具体设置(如路径、域、安全标志等)无法通过axios直接配置,这些通常由服务器在响应头Set-Cookie中设置。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部