当我尝试点击REST API URL
http:URL?param-name = param-value 时
要从JSON
客户端下载Java
文件,我收到的回复正文为空,标题为Content-Length:0
,状态代码为200.
我使用RestTemplate/HttpURLConnection/Apache HttpClient
来获取文件内容..但没有Luck
但是,文件可以从浏览器或任何其他REST
客户端(如SOAP
)或命令行(如wget
或curl
下载(我猜因为输出mime类型是自动的通过所有这些工具检测到。)
User-Agent:Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 537.36(KHTML, 像Gecko)Chrome / 48.0.2564.116 Safari / 537.36
Content-Type:text / plain;字符集= UTF-8
接受:application / octet-stream
Accept-Encoding:gzip,deflate,sdch
接受语言:en-US,en; q = 0.8
的Cookie: JSESSIONID = 49LkWLLJMdNWhHRzh7FclGGSXvV2NKpbK0PYvCFp3vGFc2mwfpGh!-1680860256
缓存控制:无缓存,无存储,最大年龄= 0,必须重新验证
日期:2016年2月24日星期三05:05:20 GMT
Pragma:no-cache
内容长度:342950
Content-Type:application / octet-stream
过期:0
内容 - 处置:附件;文件名= DevicePrices.json
X-XSS-Protection:1;模式=块
X-Content-Type-Options:nosniff
X-Powered-By:Servlet / 3.0 JSP / 2.2
X-Frame-Options:DENY
标题 - > Accept-charset - > UTF-8
表头 - >接受 - >应用/八位字节流
表头 - >接受编码 - > gzip的,放气,SDCH
表头 - >内容-类型 - >文字/纯;字符集= UTF-8
表头 - >接受 - 语言 - >恩-US,EN; Q = 0.8
标题 - >缓存控制 - > no-cache,no-store,max-age = 0, 必须-重新验证
标题 - >日期 - >星期三,2016年2月24日04:32:39 GMT
表头 - >语用 - >无缓存
表头 - >内容 - 长度 - 大于0
表头 - >内容型 - >应用/八位字节流
表头 - >失效 - 大于0
表头 - >内容-配置 - >附件;文件名= DevicePrices.json
表头 - > X-XSS-保护 - →1;模式=块
表头 - > X-的Content-Type-选项 - > nosniff
标题 - > X-Powered-By - > Servlet / 3.0 JSP / 2.2
表头 - > X框,选项 - > DENY
我试图模拟请求标头,但仍然是没有内容主体收到的相同问题。很久以来我一直坚持这个。
这种行为可能是什么原因? 请建议我检索文件内容的方法。
使用Apache HttpClient添加代码段:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet get=new HttpGet(url);
get.setHeader("Accept-charset", "UTF-8");
get.setHeader("Content-Type", "text/plain; charset=utf-8");
get.setHeader("Accept","*/*");
get.setHeader("Accept-Encoding","gzip,deflate,sdch");
get.setHeader("Content-Type","text/plain;charset=utf-8");
get.setHeader("Accept-Language", "en-US,en;q=0.8");
HttpResponse resp=client.execute(get);
System.out.println(EntityUtils.toString(resp.getEntity()));
如果我使用get.setHeader(“Accept”,“application / json”),则服务器响应406-Non Acceptable error。