Jetty 9 客户端设置 Content-Range 值无法正常工作
Jetty 9 client setting Content-Range value properly not working
我正在使用 Jetty 9.4 HttpClient 尝试重新启动大文件下载。我正在使用 Jetty 9.4 服务器。
final InputStreamResponseListener listener = new
InputStreamResponseListener();
final Request request = httpClient.newRequest(urlString); request.scheme(getUriScheme(urlString)).method(HttpMethod.GET).version(HttpVersion.HTTP_1_1).send(listener);
if (range > 0){
request.header("Range", "bytes=" + file.length() + "-")
}
final Response response = listener.get(getHttpConnTimeout(), TimeUnit.SECONDS);
// Get content length from response header
contentLength = response.getHeaders().getField(HttpHeader.CONTENT_LENGTH).getLongValue();
if (response.getStatus() == HttpStatus.PARTIAL_CONTENT_206) {
return listener.getInputStream();
}
if (response.getStatus() == HttpStatus.OK_200) {
return listener.getInputStream();
}
然而,当我使用 Java 的实现时,一切正常(意味着不使用 Jetty 9 HttpClient)
if (httpURLConnection != null) {
// This works
httpURLConnection.setRequestProperty("Range", "bytes=" + file.length() + "-");
}
if (httpsURLConnection != null) {
// This works
httpsURLConnection.setRequestProperty("Range", "bytes=" + file.length() + "-");
}
我做错了什么?有人有工作示例吗?
它是 (AFAIU) "header()",而不是 "param()"。
此外,"Content-Range" 不属于 请求。
朱利安是正确的。它帮助我消除了 Jetty 客户端作为代码问题。事实证明,Jetty 服务器需要 "partial"(又名接受范围)下载才能执行以下操作(否则 Jetty HttpClient 将无法使用部分。):
ResourceHandler rh = new ResourceHandler();
rh.setAcceptRanges(true);
它现在运行良好。我的代码片段已被修改,希望能在将来帮助其他人。
默认情况下,Microsoft IIS 接受 http 请求中的范围,但 Jetty 则不然。
实际上服务器管理员应该按照 link:
中的描述配置码头
我正在使用 Jetty 9.4 HttpClient 尝试重新启动大文件下载。我正在使用 Jetty 9.4 服务器。
final InputStreamResponseListener listener = new
InputStreamResponseListener();
final Request request = httpClient.newRequest(urlString); request.scheme(getUriScheme(urlString)).method(HttpMethod.GET).version(HttpVersion.HTTP_1_1).send(listener);
if (range > 0){
request.header("Range", "bytes=" + file.length() + "-")
}
final Response response = listener.get(getHttpConnTimeout(), TimeUnit.SECONDS);
// Get content length from response header
contentLength = response.getHeaders().getField(HttpHeader.CONTENT_LENGTH).getLongValue();
if (response.getStatus() == HttpStatus.PARTIAL_CONTENT_206) {
return listener.getInputStream();
}
if (response.getStatus() == HttpStatus.OK_200) {
return listener.getInputStream();
}
然而,当我使用 Java 的实现时,一切正常(意味着不使用 Jetty 9 HttpClient)
if (httpURLConnection != null) {
// This works
httpURLConnection.setRequestProperty("Range", "bytes=" + file.length() + "-");
}
if (httpsURLConnection != null) {
// This works
httpsURLConnection.setRequestProperty("Range", "bytes=" + file.length() + "-");
}
我做错了什么?有人有工作示例吗?
它是 (AFAIU) "header()",而不是 "param()"。
此外,"Content-Range" 不属于 请求。
朱利安是正确的。它帮助我消除了 Jetty 客户端作为代码问题。事实证明,Jetty 服务器需要 "partial"(又名接受范围)下载才能执行以下操作(否则 Jetty HttpClient 将无法使用部分。):
ResourceHandler rh = new ResourceHandler();
rh.setAcceptRanges(true);
它现在运行良好。我的代码片段已被修改,希望能在将来帮助其他人。
默认情况下,Microsoft IIS 接受 http 请求中的范围,但 Jetty 则不然。
实际上服务器管理员应该按照 link: