https下载文件sync-request新坑
用nodejs主要是做一个调度器,调度器从平台层面接收任务,并且下发到后端的业务中去。 选型用nodejs主要是因为代码简洁,思路清晰,之前用的是python。 另外,用nodejs再效率上比python快一些(同等的资源压测的结果上来看)。 结果进了这个坑就再也出不去了。。。。。
90多kb的压缩包,下载成这样了…
-rw-rw-r-- 1 ise ise 176127 Oct 20 19:09 350bb7d2b2d7a2af7269a0d87a0eec52.zip
-rw-rw-r-- 1 ise ise 175958 Oct 21 10:52 720fa49e2e3a451ff98075b903bf73d9.zip
-rw-rw-r-- 1 ise ise 176183 Oct 20 19:23 950a12017bda1880f91a923e87ca66f4.zip
然后,这种问题我还在调,开个帖子一边调一边给大家复述,我相信用到同步的小伙伴都会遇到类似的问题。。。 代码块
/**
* 非json返回
* @param {[type]} interFace [description]
* @param {[type]} url [description]
* @param {[type]} headers [description]
* @return {[type]} [description]
*/
sync_get_body: function(interFace,url,headers){
var resData;
var results = undefined;
// 设置基本参数
var options = {}
// 判读是否设置header头
if (headers != undefined){
options['headers'] = headers;
}
// 异常包含
try {
// 请求过程、返回
resData = request('GET',url,options);
if (resData.statusCode == 200){
results = ''+resData.getBody('utf8');
}else{
log.reqError(interFace,resData.statusCode,'GET request Status is not Fine!!');
}
} catch(e) {
// 异常处理的地方
log.reqPackageError(interFace,url,e.stack);
}
return results;
},
从平台上看到任务完成,并且数据也是从服务器上下载的,一切都是正常的,就是不知道下载压缩包为何就是这个尿性。。。
7 回复
去除了各种超时设置,还是失败了。再做别的尝试…
sync_get_body: function(interFace,url,headers){
var resData;
var results = undefined;
// 设置基本参数
var options = {}
// 判读是否设置header头
if (headers != undefined){
options['headers'] = headers;
}
// 异常包含
try {
// 请求过程、返回
resData = request('GET',url,options);
if (resData.statusCode == 200){
results = resData.getBody().toString();
}else{
log.reqError(interFace,resData.statusCode,'GET request Status is not Fine!!');
}
} catch(e) {
// 异常处理的地方
log.reqPackageError(interFace,url,e.stack);
}
return results;
},
最后解决了。。原来下载之后不要转utf8,直接就是buff写入就好了。。。
var resData;
var results = undefined;
// 设置基本参数
var options = {}
// 判读是否设置header头
if (headers != undefined){
options['headers'] = headers;
}
// 异常包含
try {
// 请求过程、返回
resData = request('GET',url,options);
if (resData.statusCode == 200){
results = resData.getBody();
}else{
log.reqError(interFace,resData.statusCode,'GET request Status is not Fine!!');
}
} catch(e) {
// 异常处理的地方
log.reqPackageError(interFace,url,e.stack);
}
return results;
为什么要getBody('utf8')
?
…果然是这个原因
@SinalVee 因为获得数据的时候需要。。。
这是什么坑,,感觉思维短路了。。
@chengang4505 上传异常的坑。。