setChunkedStreamingMode() 出现 405 错误

405 Error with setChunkedStreamingMode()

我正在尝试从我的服务器下载一个文件。我的问题是如果我使用 chunkedStreamingMode 服务器是 return 我一个 405 - Method not Allowed 错误。如果我不设置 chunkedStreamingMode 则下载工作正常。

我不明白为什么启用 chunkedStreamingMode 的文件下载会被我的服务器拒绝。我在这里做错了什么吗?还是我需要在服务器上设置一些东西才能使 chunkedStreamingMode 正常工作?

在我的服务器上我有:

@GET
@Path("/{fileId}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadFile(@PathParam("fileId") long fileId, @Context HttpServletRequest req,
                @Context HttpServletResponse response) throws IOException {
..
}

在我使用的客户端上:

WebTarget target = rootTarget.path(uri);                            
Invocation.Builder builder = target.request(MediaType.APPLICATION_OCTET_STREAM_TYPE);
response = builder.get();

我在我的客户端上使用了以下 HttpUrlConnectorProvider:

private static HttpUrlConnectorProvider buildHttpUrlConnectorProvider(){
     HttpUrlConnectorProvider.ConnectionFactory factory = new HttpUrlConnectorProvider.ConnectionFactory() {
            @Override
            public HttpURLConnection getConnection(URL url) throws IOException {                      
                HttpURLConnection result = (HttpURLConnection) url.openConnection();
                result.setChunkedStreamingMode(4096);                          
                result.setDoOutput(true);  
                return result;
            }
        };
     return new HttpUrlConnectorProvider().connectionFactory(factory);
}

我最终通过在 HTTPUrlConnection 中为 setChunkedStreamingMode(4096); 的客户端配置设置以下 属性 解决了这个问题:

.property(ClientProperties.REQUEST_ENTITY_PROCESSING, "CHUNKED");