iPhone上wx.request不应该把返回数据都当成json解析
发布于 5 年前 作者 juan90 14926 次浏览 来自 问答

出现 errMsg: “request:fail response data convert to utf8 fail”

wx.request({

        url: “https://www.example.com/api”,
        data: “post data string”,
        method: ‘POST’,
        header: {
            “content-type”: “text/plain”
        },
        success: function (res) {
            console.log([“success”, res]);
        },
        fail: function (res) {
            console.log([“failed”, res])
        },
        complete: function () {
            // complete
            console.log(“complete”);
        }
    });

开发工具 和 安卓真机 都正常,iPhone上报错,感觉是当成json数据解析。

实际上返回的是应该是图片二进制数据, 尝试请求时增加 dataType: “text” 无效, 增加 header:{“accept”: “image/*”} 也无效。

希望尽快修复。

5 回复

@Special 返回的是图片二进制数据,的确不是有效的UTF8字符串

于是iPhone的微信上我没办法获取这些响应的原始数据。(对方 HTTP/1.1 200 OK 的)

其实我觉得不管如何,wx.request需要有获取返回的Header,以及原始响应信息的方法

因为有些接口需要客户端这边对原始信息进行校验的,或者用解密算法处理原始二进制数据

自动进行 JSON.parse 只能作为一种满足普遍需求的辅助行为

@韬々

wx.request文档里说:dataType默认为 json。如果设置了 dataType 为 json,则会尝试对响应的数据做一次 JSON.parse

可是没有说明dataType支持哪些,我即使设置为text 它也报响应UTF8错误

另外我不是要下载图片,服务端接口也不是我写的,总之没法拿到请求结果了。

安卓和开发工具上都正常,说明在iOS上实现有bug

@Special 或者让 dataType 支持  “binary”  “application/octet-stream” 之类的?

有对应的链接不

如果需要下载图片回显,可以考虑接口返回url,然后使用image组件显示。或者直接使用wx.downloadFile接口下载文件

回到顶部