我正在使用ConnectionRequest和downloadImageToStorage从Web服务器下载图像。网络服务器返回307一个位置,下一个网址返回301与另一个位置,该位置最终返回实际图像。
我定义了一个FailureCallback,但它根本没有被调用。我只能在设备屏幕上看到一条消息,指示错误并具有重试/取消按钮。
这是我的代码
FailureCallback<Image> failure = new FailureCallback<Image>() {
public void onError(Object sender, Throwable err, int errorCode, String errorMessage) {
System.out.println(errorCode);
if (errorCode == 307 || errorCode == 301) {
System.out.println(sender.getClass().getName());
}
}
};
ConnectionRequest request = new ConnectionRequest();
request.setUrl(url);
request.setHttpMethod("GET");
request.downloadImageToStorage("img_" + imgCount, (img) -> {
SpanLabel t = new SpanLabel();
t.add(BorderLayout.CENTER, img);
myform.add(t);
}, failure);
++imgCount;
如何捕获这些错误,以便从Response对象获取Location并使用新的ConnectionRequests调用它们?
请注意,当我在Chrome中使用调试器来获取我尝试加载的图片时,我可以看到错误代码和位置链。
由于
答案 0 :(得分:1)
要捕获错误代码和错误消息 setReadResponseForErrors 方法应该被调用并覆盖ConnectionRequest的 handleErrorResponseCode 方法,如下面的代码所示
request .setReadResponseForErrors(true);
@Override
protected void handleErrorResponseCode(int code, String message) {
Dialog.show("Message", " code "+ code+" msg "+message, "ok", null);
}
答案 1 :(得分:0)
正如Shai在评论中提到的,有一个错误导致307被解释为错误响应,而不是重定向。现在应该在最新版本中修复,这应该会使您的示例正常工作。
还有另一个未修复的错误,它会阻止在出现错误响应代码时调用onError()回调。这将很快修复。同时,您的示例应该有效(并且不会调用onError())和301和307响应代码。