接收Content-Length:标头中的0,响应代码200,来自Java客户端的GET响应

时间:2016-02-24 05:21:48

标签: java rest http

当我尝试点击REST API URL http:URL?param-name = param-value 时 要从JSON客户端下载Java文件,我收到的回复正文为空,标题为Content-Length:0,状态代码为200.

我使用RestTemplate/HttpURLConnection/Apache HttpClient来获取文件内容..但没有Luck

但是,文件可以从浏览器或任何其他REST客户端(如SOAP)或命令行(如wgetcurl下载(我猜因为输出mime类型是自动的通过所有这些工具检测到。)

从Chrome ARC客户端

发出请求时的请求和响应标头

请求

  

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

来自Java客户端的请求和响应

请求标头

  

标题 - > 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。

0 个答案:

没有答案