HarmonyOS鸿蒙Next中httpRequest请求头和传参问题

HarmonyOS鸿蒙Next中httpRequest请求头和传参问题 大佬们,麻烦帮忙看下,我明明在header里设置了Token、Username,但后端拿不到!data数据格式也有问题!

发请求:

cke_180.png

后端看到的请求头【没有 Token、Username】:

{'REQUEST_METHOD': 'POST', 'QUERY_STRING': '', 'SCRIPT_NAME': '', 'PATH_INFO': '/api/get_notifications', 'wsgi.multithread': True, 'wsgi.multiprocess': True, 'REMOTE_ADDR': '192.168.8.100', 'REMOTE_HOST': '192.168.8.100', 'REMOTE_PORT': 11631, 'SERVER_NAME': '192.168.8.100', 'SERVER_PORT': '8001', 'HTTP_HOST': '192.168.8.100:8001', 'HTTP_USER_AGENT': 'libcurl-agent/1.0', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CONTENT_LENGTH': '74'}

后端看到的请求参数【不知道为什么整段参数都在键里面】:

<QueryDict: {'{"phone_number":"","operation":"查询","config_type":"base_notification"}': ['']}>

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

6 回复

请问后端获取不到 header 参数的问题解决了么

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


解决了,不知道怎么突然好了,我也莫名其妙的,

希望HarmonyOS能继续推出更多实用的功能,满足用户的不同需求。

今天重新试又可以了,神奇!关于整段参数都在键里面,可以从body里读取:

json.loads(request.body.decode(‘utf-8’))

在HarmonyOS鸿蒙Next中,httpRequest模块用于发起HTTP请求。请求头可以通过header属性设置,传参可以通过extraData属性传递。

  1. 设置请求头:在httpRequestoptions对象中,使用header属性来设置请求头。例如:

    let options = {
        method: 'GET',
        header: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer token'
        }
    };
    
  2. 传参:对于GET请求,参数通常附加在URL中。对于POST、PUT等请求,参数可以通过extraData属性传递。例如:

    let options = {
        method: 'POST',
        extraData: {
            key1: 'value1',
            key2: 'value2'
        }
    };
    
  3. 发起请求:使用httpRequest.request方法发起请求,并处理响应。例如:

    httpRequest.request('https://example.com/api', options, (err, data) => {
        if (err) {
            console.error('Request failed:', err);
        } else {
            console.log('Response data:', data);
        }
    });
    

以上是鸿蒙Next中httpRequest请求头和传参的基本用法。

在HarmonyOS鸿蒙Next中,使用httpRequest进行网络请求时,可以通过header属性设置请求头,通过extraData属性传递参数。例如:

let httpRequest = http.createHttp();
let url = "https://example.com/api";
let headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer token'
};
let params = {
    key1: 'value1',
    key2: 'value2'
};

httpRequest.request(url, {
    method: http.RequestMethod.POST,
    header: headers,
    extraData: JSON.stringify(params)
}, (err, data) => {
    if (err) {
        console.error('Request failed:', err);
    } else {
        console.log('Response:', data.result);
    }
});

确保请求头和参数格式正确,并根据API要求调整Content-Type和参数传递方式。

回到顶部