接收到的内容长度: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尝试使用不同的请求头。但同样的问题