美文网首页uni-appuin-appuni-app交流圈
uniapp之请求同一个接口app端和h5端返回数据不一样(ap

uniapp之请求同一个接口app端和h5端返回数据不一样(ap

作者: 瑟闻风倾 | 来源:发表于2019-08-22 15:18 被阅读3次
test:function(){
            uni.request({
              url: "http://**.**.com:8888/user/login",
              method: "POST",
              header: {
                "content-type": "application/x-www-form-urlencoded"
              },
              data: {
                  mobile : "15639150623",
                  password : "ly250"
              },
              success(res) {
                console.log("test-login:" + JSON.stringify(res));
              },
              fail(res) {},
              complete() {}
            });
},

(1) h5端正常

{
  "data": {
    "code": "0",
    "msg": "success",
    "data": {
      "token": "WnbR5-xzSfLiNpNj",
      "userInfo": {
        "user_id": "10",
        "center_id": "1",
        "dept_id": "1",
        "name": "liy",
        "mobile": "15639150623",
        "password": "8f8fc1b88358d0db495f1a87dc41e13d",
        "is_admin": "0",
        "status": "1",
        "add_time": "1565230771",
        "last_login_time": "1566380685",
        "last_login_ip": "112.16.93.24"
      }
    }
  },
  "statusCode": 200,
  "header": {
    "pragma": "no-cache",
    "content-type": "application/json; charset=Array;",
    "cache-control": "no-store, no-cache, must-revalidate",
    "expires": "Thu, 19 Nov 1981 08:52:00 GMT"
  },
  "errMsg": "request:ok"
}
content-type.png

(2) app端请求不到业务数据

{
  "data": "200 OK",
  "statusCode": 200,
  "header": {
    "Cache-Control ": "no-store, no-cache, must-revalidate",
    "Pragma ": "no-cache",
    "Expires ": "Thu, 19 Nov 1981 08:52:00 GMT",
    "X-Powered-By ": "PHP/7.1.16",
    "X-Android-Response-Source ": "NETWORK 200",
    "Connection ": "keep-alive",
    "Access-Control-Allow-Headers ": "x-requested-with, content-type",
    "X-Android-Sent-Millis ": "1566434712638",
    "Content-Type ": "application/json; charset=Array;",
    "Date ": "Thu, 22 Aug 2019 00:45:13 GMT",
    "Server ": "nginx/1.14.0",
    "Transfer-Encoding ": "chunked",
    "X-Android-Received-Millis ": "1566434712659",
    "Access-Control-Allow-Origin ": "*"
  },
  "errMsg": "request:ok"
}

问题:app端请求的业务数据data一直为“200 OK”,但h5端可以请求到业务数据。
分析:应该是响应头的问题。
(1) 猜想1:前端发送数据的 "编码方式" 与后台接收数据的 "解码方式" 不同。这里说的编码与解码对应的是请求头 header 中的 Content-Type 字段。

  • 已知当前开发环境HBuilderX字符集为UTF-8:在开发环境右下角查看


    image.png
  • 后台需修改响应头的字符集为UTF-8(问题解决):
    错误格式.png
    错误格式:中间分号后面多加了空格,最后面多加了分号。
    正确格式.png
    正确格式:"content-type": "application/json;charset=UTF-8",

总结:h5端正常解析,但是app端数据解析异常,可能原因是不同语言对header解析不一样(有些语言是弱语言,兼容性没有那个大)。

相关文章

网友评论

    本文标题:uniapp之请求同一个接口app端和h5端返回数据不一样(ap

    本文链接:https://www.haomeiwen.com/subject/xxinsctx.html