我有一个写入GET请求响应正文的服务。写入的数据可以是XLSX文件的PDF文件。
我的问题是,当我使用Google Chrome浏览器发出请求时,文件已下载。但是,当我使用邮递员进行相同的呼叫时,我在响应正文中只得到一些乱七八糟的文字(我想响应是压缩字节),而我无法下载文件。
在此,我向控制器发出文件请求后展示了下载文件的方法:
我的Ajax电话:
$.ajax({
url: request_url,
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(searchCriteria),
success: function (response) {
swal("SWEET");
},
error: function (err) {
swal(JSON.stringify(err));
}
});
在服务中,我设置响应内容和类型如下:
response.setContentType(contentType);
// Assign the byte stream's size
response.setContentLength(baos.size());
//Write to response stream
Writer.write(response, baos);
我通过Ajax调用发出请求,并得到与邮递员相同的响应, 是否可以将那些字节下载回Ajax?
谢谢。
答案 0 :(得分:0)
我发现了问题所在,当我从Google chrome发出请求时,该请求是指向另一个控制器的GET请求。另一方面,用Postman制作的是指向不同控制器的POST请求。
GET请求响应的内容可以下载为文件,只要响应头中已提及即可。
但是,POST的内容没有。我相信,因为POST并不意味着触发任何下载,如Archer的评论中所述。