快应用 fetch接口无法直接获取到网络数据的解决方法

最近开发快应用app时遇到一个奇怪问题:fetch.fecth在开发工具QuickAppIDE “本地预览”时,返回的data数据是正常的;而远程真机就无法直接获取,data内容不是json数据,

而是“internal://cache/action-xx.do”的字符串,除了data内容是这个外,其他数据都正常,responsecode也是200,contentlenth也是正常的。

 

经反复思考尝试,发现“internal://cache/action-xx.do”是一个文件路径地址,即数据已经获取到本地了,但是被存在一个cache文件里。Fetch接口返回的cache文件地址,可能是因为数据量太大了,都读到返回数据里,会占用很大内存;而被保存在cache文件里,用户需要时再读取会比较好。

 

于是在代码里import @system.file, 通过file.readText 接口读取到了返回数据,跟pc上的本地预览里返回的数据一模一样。

 

下面是相应代码:

 

import router from '@system.router'

import file from '@system.file'

 

getSubMenu(reqdata) {

const that = this; // 保存当前this

    fetch.fetch({

          url: 'http://xxxxx/action.do',

          method: 'POST',

          success: function (res) {

              if(res.data.search("internal://cache") != -1) {

                  //如果是保存在文件里,需要从文件里读取数据

                  that.getDataInfo(res.data);

              } else {

                  var resdata = JSON.parse(res.data);

                  //本机预览在这里处理数据

              }

        }

          },

          fail: function (err, code) {

               console.log(that.tag +"handling fail  code = " + code);

          }

    })

  },

 

 

  getDataInfo(filepath) {

    const that = this; // 保存当前this

      file.readText({

        uri: filepath,

        success: function (data) {

            console.log(that.tag + data.text);

            //从文件里获取到的数据和QuickAppIDE 本机预览里的数据一样

        },

        fail: function (data, code) {

            console.log(`handling fail, code = ${code}`)

        }

})

 

  }

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值