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");
我正在尝试从我的服务器下载一个文件。我的问题是如果我使用 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");