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

时间:2014-03-11 10:56:42

标签: 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

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

1 个答案:

答案 0 :(得分:1)

我认为我的评论对于其他人来说更具可读性(实际上它是一个):

您没有在servlet方法中评估range-header。超类HttpServlet也不评估它(但是来自Tomcat的DefaultServlet。)

servlet规范已将大部分实现工作留给Apache等提供程序。这解释了为什么像HttpServlet这样的API类不能解释特殊的http标头,而是像提到的Tomcat-DefaultServlet那样提供类。规范的主要目的主要是使不同的实现不会强迫人们只使用一个。