接受范围是否与gwt中的requestbuilder一起工作?

8ftvxx2r  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(318)

我尝试在gwt中使用requestbuilder来查看是否支持accept范围。以下是我的客户代码:

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

我所期望的是,由于我在请求中将range头设为0-10,所以只有前10个字节会被发送到客户端。但是在这里整个字符串都被发送了。我做错什么了?我有什么遗漏吗?

5rgfhyps

5rgfhyps1#

我觉得我的评论对于其他人来说更具可读性作为答案(实际上是一个):
您没有在servlet方法中计算范围头。还有超级阶级 HttpServlet 也不评估它(但是 DefaultServlet 来自tomcat)。
servlet规范将大部分实现工作留给了apache等提供者。这就解释了为什么api类 HttpServlet 不解释特殊的http头,但是提供程序类,如前面提到的TomcatDefaultServlet。规范的主要目的是使不同的实现不必强迫人们只使用一个。

相关问题