我正在尝试编写一个自定义ExceptionMapper
我想返回text/plain
但是Response
返回的或链中的某些内容坚持用 <pre></pre>
包装我的内容标签。
这是我尝试过的,我尝试没有设置 MediaType
:
final Response.ResponseBuilder rb = Response.status(500);
rb.entity(e.getCause().getMessage());
return rb.build();
我还尝试设置MediaType.TEXT_PLAIN_TYPE
还有:
final Response.ResponseBuilder rb = Response.status(500);
rb.type(MediaType.TEXT_PLAIN_TYPE);
rb.entity(e.getCause().getMessage());
return rb.build();
在这两种情况下,我都会收到用 HTML 封装的异常消息:
<html>
<head></head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">
com.google.appengine.api.oauth.InvalidOAuthParametersException:
</pre>
</body>
<style type="text/css"></style>
</html>
我认为这可能是浏览器封装了内容,我在 Chrome 和 Safari 中得到了同样的 HTML block ,封装在纯文本输出周围,但是当我使用 curl
时,我得到以下内容.
[jhr@Blackintosh] [~]
curl http://funny-pages.appspot.com/image/all
com.google.appengine.api.oauth.InvalidOAuthParametersException:
我需要做什么才能让它在浏览器中显示未修饰的内容?
最佳答案
只要 curl
为您提供纯文本,就可以清楚地看出 HTML 换行来自 Google Chrome。此行为可以(应该)在客户端配置。如果您想确保您的客户始终获得纯文本文件 - 将其作为 MIME attachment 发送。在这种情况下,Chrome 将保存一个文件,用户必须使用某种纯文本查看器打开它。
关于java - 如何让浏览器停止使用 <pre> 标签包装我的实体数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884330/