HarmonyOS 鸿蒙Next 服务器接收HTTP数据POST请求显示为乱码

HarmonyOS 鸿蒙Next 服务器接收HTTP数据POST请求显示为乱码

log输出信息为

08-29 20:36:29.560 16276-29530/com.example.baidu I 03B00/JSApp:  app Log: ##header: {"code":202,"data":"type error"}

08-29 20:36:29.783 16276-29530/com.example.baidu I 03B00/JSApp:  app Log: ##Result:<!DOCTYPE html>

08-29 20:36:29.783 16276-29530/com.example.baidu I 03B00/JSApp:  app Log: ##code:200

08-29 20:36:29.783 16276-29530/com.example.baidu I 03B00/JSApp:  app Log: ##header:{"Content-Type":["text/html"],"Date":["Mon, 29 Aug 2022 12:36:29 GMT"],"Server":["bfe"],"Status-Line":["HTTP/1.1 200 OK"]}

08-29 20:36:29.783 16276-29530/com.example.baidu I 03B00/JSApp:  app Log: ##cookies:undefined

JS代码

```perl
import http from '[@ohos](/user/ohos).net.http'
export default {
    data: {
        title: ""
    },
    onInit() {
        this.title = this.$t('strings.world');
    },
    httprequest() {
        var username="2102010808";
        var password="fyx5212003";
        let httpRequest = http.createHttp();
        // 用于订阅http响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
        // 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback). 8+
        httpRequest.on('headersReceive', (header) => {
            console.info('##header: ' + JSON.stringify(header));
        });
        httpRequest.request(
            // 填写http请求的url地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
            "http://43.138.48.60:8889/studentlogin/verification/",
            {
                method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
                // 开发者根据自身业务需要添加header字段
                // header: {
                //     'Content-Type': 'application/json'
                // },
                // 当使用POST请求时此字段用于传递内容
                extraData: {
                    'username':"2102010808",
                    'password':"fyx5212003",
                },
                connectTimeout: 60000, // 可选,默认为60s
                readTimeout: 60000, // 可选,默认为60s
            }, (err, data) => {
            if (!err) {
                // data.result为http响应内容,可根据业务需要进行解析
                console.info('##Result:' + data.result);
                console.info('##code:' + data.responseCode);
                //data.header为http响应头,可根据业务需要进行解析
                console.info('##header:' + JSON.stringify(data.header));
                console.info('##cookies:' + data.cookies); // 8+
            } else {
                console.info('##error:' + JSON.stringify(err));
                // 当该请求使用完毕时,调用destroy方法主动销毁。
                httpRequest.destroy();
            }
        }
        );
    }
}

更多关于HarmonyOS 鸿蒙Next 服务器接收HTTP数据POST请求显示为乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

楼主你好,header里面改成这样试下

'Content-Type':"application/json; charset=UTF-8"

更多关于HarmonyOS 鸿蒙Next 服务器接收HTTP数据POST请求显示为乱码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试了一下,不能运行,会报错,

楼主你好,把冒号换成英文的,

你好,问题解决了吗,我这边传到后台的中文也乱码

![N345HH7(9UY4@EAOUNXKLBS.png

针对HarmonyOS 鸿蒙Next 服务器接收HTTP数据POST请求显示为乱码的问题,可能的原因及解决方法如下:

  1. 字符编码不一致

    • 检查客户端发送POST请求时使用的字符编码与服务器端接收时解析的字符编码是否一致。常见的字符编码有UTF-8、GBK等。如果编码不一致,服务器在解析时可能会出现乱码。
  2. 请求头设置问题

    • 确认客户端在发送POST请求时是否正确设置了Content-Type请求头。例如,如果发送的是JSON数据,应设置为application/json; charset=utf-8
  3. 服务器解析逻辑

    • 检查服务器端解析POST请求数据的逻辑是否正确。确保在读取和解析数据时,使用了正确的字符编码。
  4. 数据传输过程中的编码转换

    • 如果数据在传输过程中经过了中间件或代理服务器,检查这些环节是否对数据进行了不必要的编码转换。
  5. 网络传输问题

    • 确认网络传输过程中是否存在数据包损坏或传输错误的情况,这可能导致数据在服务器端解析时出现乱码。

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

回到顶部