java - Accept-Ranges 是否可以与 GWT 中的 RequestBuilder 一起使用?

标签 java servlets gwt http-headers

我正在尝试在 GWT 中使用 RequestBuilder 来查看是否支持 Accept-Ranges。 以下是我的客户端代码:

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,pathToServlet);
builder.setHeader("Range","bytes=0-10");
RequestCallback callback = new RequestCallback() {

@Override
public void onError(Request arg0, Throwable arg1) {
}

@Override
public void onResponseReceived(Request req, Response res) {
    log.info("Text:"+res.getText());
    log.info("Code:"+res.getStatusCode());
}
};

try {
  builder.sendRequest(null, callback);
} catch (RequestException e) {}

我的servlet代码只是一个简单的测试代码:

public class RangeTest extends HttpServlet{

static Logger log = Logger.getLogger(RangeTest.class);

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

    String output = new String("This is a test string to be sent to the client");
    response.setContentType("text/xml");
    PrintWriter out = response.getWriter();
    out.println(output);
}
}

在客户端获得的输出中,打印以下内容:

Text:This is a test string to be sent to the client
Code:200

我所期望的是,由于我在请求中将范围 header 指定为 0-10,因此只有前 10 个字节会发送到客户端。但这里整个字符串都被发送。我在这里做错了什么?有什么我错过的吗?

最佳答案

我觉得我的评论对于其他人来说作为答案更具可读性(实际上它就是一个):

您没有评估 servlet 方法中的范围 header 。并且父类(super class) HttpServlet 也不评估它(但来自 Tomcat 的 DefaultServlet)。

Servlet 规范将大部分实现工作留给了 Apache 等提供商。这解释了为什么像 HttpServlet 这样的 API 类不负责解释特殊的 http header ,而是像前面提到的 Tomcat-DefaultServlet 这样的提供程序类。规范的主要目的主要是实现不同的实现,而不是强制人们只能实现一种。

关于java - Accept-Ranges 是否可以与 GWT 中的 RequestBuilder 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22323628/

相关文章:

java - 如何更改tabPanel的内容?

java - 具有按钮和文本的 GWT 小部件?

unit-testing - GWT 单元测试 TDD 和工具

java - 在 Java 中,如果条件本身为 true,则将 if 条件中的值分配给变量

java - 在不使用 JnlpDownloadServlet 类的情况下启动 JNLP

java - HttpServletRequest 不返回 cookie - 但它们存在

java - 无法修复 java.lang.IllegalStateException : Unable to retrieve EntityManagerFactory for unitName

java - 为什么我们在 Java 中有 Arrays 和 Array

java - 我可以在 jackson 映射器中使用数字作为属性名称吗?

java - 映射到 POJO 的 ObjectMapper 返回 Null