0

在我的 JAXRS 应用程序中,当许可证无效时,我会发出 LicenseKeyException。该异常被 ExceptionMapper 捕获,该异常映射器通过 403 状态代码响应调用者,实体持有一些我想随状态一起发送的额外信息。

但是在我的 javascript 客户端上,在 XMLHttpRequest 中,我只得到状态,而不是响应。

Java 代码

@Provider
public class LicenseKeyExceptionMapper implements ExceptionMapper<LicenseKeyException> {
    @Override
    public Response toResponse(final LicenseKeyException exception) {
        return Response
            .status(Response.Status.FORBIDDEN)
            .entity(exception.getMessage()) // I want this to be available to the javascript caller
            .build();
    }
}

Javascript代码

let xhr = new XMLHttpRequest();
xhr.open(opt.method, makeActuelURL(opt.url), true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("licenseKey", opt.licenseKey);
let json = JSON.stringify({...opt, charsetName: "utf-8"});
xhr.responseType = "json";
xhr.onload = () => {
    if (xhr.status === 200)
        resolve(xhr);
    else
        reject(makeError(xhr));
};
xhr.onerror = () => reject(makeError(xhr));
xhr.send(json);

当状态不是 200(我尝试了 500 和 403)时,xhr 对象中的响应字段为空。我期待找到我认为我在 Java 代码中放入的实体。

我做错了什么?

4

0 回答 0