小明子
小明子
  • 发布:2018-03-12 11:30
  • 更新:2018-08-09 17:19
  • 阅读:2105

【报Bug】IOS 通过plus.downloader的post方式下载应用服务器文件时,data上送的数据后台无法接收

分类:HTML5+

详细问题描述
[内容]
目前需求是需要手机上直接从应用服务器通过.do的形式下载合同文件,手机需要上送业务参数信息,于是使用了plus.downloader的post请求方式,data参数项中上送业务数据。但是IOS下载的时候,应用服务器后台无法接收到数据,通过wireshark抓包发现data上送的数据都为空.

安卓正常

重现步骤
[步骤]
[结果]
[期望]

运行环境
[系统版本] IOS
[浏览器版本]
[IDE版本] HB
[mui版本] 3.6.0

附件
[代码片段]
function getFileFromNetwork(localpath){
var options = {
method: "POST",//POST时data数据有效
filename :path,
priority:10,//下载优先级
timeout:15,//服务器响应超时时间
retry : 1,//重试次数
retryInterval : 5,//重试间隔时间
data:uploadData
};
// downloader = plus.downloader.createDownload(remoteUrl,options,function(task,status){});//这种方法无法监听中间状态
downloader = plus.downloader.createDownload(remoteUrl,options);

    var waiting =null;  
    waiting = plus.nativeUI.showWaiting("下载中...");  
    var startTime = +new Date().getTime();  
    downloader.addEventListener('statechanged',function(task,status){  
        switch(task.state) {  
                    case 0:  
                    console.log("=======***********=========")  
                    break;  
                    case 1: // 开始下载  
                    console.log("=======开始下载=========")  
                        break;  
                    case 2: // 已连接到服务器  
                    console.log("=======已连接到服务器=========")  
                        break;  
                    case 3: // 已接收到数据  
                    console.log("=======已接收到数据=========")  
                        processFunc && processFunc(task.downloadedSize,task.totalSize);  
                        break;  
                    case 4: // 下载完成  
                        waiting.close();  
                        if(status == 200){  
                            console.log("下载成功=" + task.filename);  
                            var absolutePath = plus.io.convertLocalFileSystemURL(task.filename);  
                            successFunc && successFunc(absolutePath,task.filename);  
                            //删除临时文件  
                             if (task.filename){  
                                //exports.delFile(task.filename);  
                            }  
                        }else{  
                            console.log("下载失败=" + status+"=="+localpath);  
                            var ec = task.getResponseHeader("ec")||'';  
                            var em = task.getResponseHeader("em")||'';  
                            errorFunc && errorFunc(ec,em);  
                                //dtask.abort();//文档描述:取消下载,删除临时文件;(但经测试临时文件没有删除,故使用delFile()方法删除);  
                            if (!localpath){  
                                //exports.delFile(localpath);  
                            }  
                        }  

                        var endTime = +new Date().getTime();  
                        console.log("下次耗时(s):"+(endTime - startTime)/1000);  
                        waiting.close();  
                        break;  
                }  
    })  

    downloader.start();  
}  

[安装包]

联系方式
[QQ]
[电话] 18607127502

2018-03-12 11:30 负责人:无 分享
已邀请:
小明子

小明子 (作者)

已解决,需要后台指定接收类型。POST的方式才支持data数据上送,否则只能url后面拼接参数

维多利亚胡

维多利亚胡 - 小白

你的这个问题解决了吗,我也遇到这个问题了,安卓没有问题,ios有问题

该问题目前已经被锁定, 无法添加新回复