我有一个使用 Jetty 版本 8 发送 http 帖子的程序。我的响应处理程序工作,但我得到一个 http 响应代码 303,这是一个重定向。我读了一条评论说码头 8 支持遵循这些重定向,但我不知道如何设置它。我试过查看javadocs,找到了 RedirectListener 类,但没有关于如何使用它的详细信息。我试图猜测如何编码它没有奏效,所以我被困住了。感谢所有帮助!
编辑
我查看了码头源代码,发现它只会在响应代码为 301 或 302 时重定向。我能够覆盖 RedirectListener 以使其也处理休息代码 303。之后,Joakim 的代码完美运行。
public class MyRedirectListener extends RedirectListener
{
public MyRedirectListener(HttpDestination destination, HttpExchange ex)
{
super(destination, ex);
}
@Override
public void onResponseStatus(Buffer version, int status, Buffer reason)
throws IOException
{
// Since the default RedirectListener only cares about http
// response codes 301 and 302, we override this method and
// trick the super class into handling this case for us.
if (status == HttpStatus.SEE_OTHER_303)
status = HttpStatus.MOVED_TEMPORARILY_302;
super.onResponseStatus(version,status,reason);
}
}