接收到的内容长度:0在标头中,响应代码为200,用于从Java客户端获取响应

接收到的内容长度:0在标头中,响应代码为200,用于从Java客户端获取响应,java,rest,http,Java,Rest,Http,当我试图点击一个RESTAPI URLhttp:URL?param name=param value 为了从Java客户端下载JSON文件,我收到的响应正文为空,标题中的内容长度为0,状态代码为200 我使用restemplate/HttpURLConnection/apachehttpclient获取文件内容。。但是没有运气 但是,可以从浏览器或任何其他REST客户端(如SOAP)或命令行(如wget或curl)下载该文件(我想这是因为所有这些工具都会自动检测输出mime类型) 从Chrom

当我试图点击一个
RESTAPI URL
http:URL?param name=param value 为了从
Java
客户端下载
JSON
文件,我收到的响应正文为空,标题中的
内容长度为0
,状态代码为200

我使用
restemplate/HttpURLConnection/apachehttpclient
获取文件内容。。但是没有运气

但是,可以从浏览器或任何其他
REST
客户端(如
SOAP
)或命令行(如
wget
curl
)下载该文件(我想这是因为所有这些工具都会自动检测输出mime类型)

从Chrome ARC客户端激发请求时的请求和响应头 要求 用户代理:Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML, 如壁虎)铬/48.0.2564.116狩猎/537.36

内容类型:文本/纯文本;字符集=utf-8

接受:应用程序/八位字节流

接受编码:gzip、deflate、sdch

接受语言:en-US,en;q=0.8

曲奇: JSESSIONID=49LkWLLJMdNWhHRzh7FclGGSXvV2NKpbK0PYvCFp3vGFc2mwfpGh-1680860256

回应 缓存控制:无缓存,无存储,最大年龄=0,必须重新验证

日期:2016年2月24日星期三05:05:20 GMT

Pragma:没有缓存

内容长度:342950

内容类型:应用程序/八位字节流

过期日期:0

内容处置:附件;filename=DevicePrices.json

X-XSS-Protection:1;模式=块

X-Content-Type-Options:nosniff

X-Powered-By:Servlet/3.0jsp/2.2

X帧选项:拒绝

来自java客户端的请求和响应 请求头 标头-->接受字符集-->UTF-8

标头-->接受-->应用程序/八位字节流

报头-->接受编码-->gzip、deflate、sdch

标题-->内容类型-->文本/普通;字符集=utf-8

标题-->接受语言-->en-US,en;q=0.8

响应头 标头-->缓存控制-->无缓存,无存储,最大年龄=0, 必须重新验证

页眉-->日期-->星期三,2016年2月24日04:32:39 GMT

标头-->杂注-->无缓存

标题-->内容长度-->0

标题-->内容类型-->应用程序/八位字节流

标头-->过期-->0

标题-->内容处理-->附件;filename=DevicePrices.json

标头-->X-XSS-Protection-->1;模式=块

标题-->X-Content-Type-Options-->nosniff

标题-->X供电-->Servlet/3.0 JSP/2.2

标题-->X帧选项-->拒绝

我试图模拟请求头,但仍然是没有内容主体收到的问题。我被这个问题困扰了很久

这种行为的原因可能是什么? 请建议我检索文件内容的方法

使用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中响应不可接受的错误。

您通常必须登录才能获取此资源吗?java请求中没有JSESSIONID。或者,当没有提供用户代理头时,服务器可能有一个bug。尝试发送一个.Unrelated,但是当您需要
应用程序/json
时,为什么要请求
应用程序/octet流
?请求/响应值的信息量不大。似乎实现get的代码返回的结果为零,因此返回的正文长度为零。@WW-不需要登录。我试图提供一个JSESSIONID,但问题相同。@DwB-返回另一个GET API结果的代码相同。正如我所说,我尝试了许多方法,使用restemplate/HttpURLConnection/apachehttpclient尝试使用不同的请求头。但同样的问题