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:

中的描述配置码头

http://download.eclipse.org/jetty/9.4.2.v20170220/apidocs/org/eclipse/jetty/servlet/DefaultServlet.html