Java 在CXF@WebMethod中呈现自己的响应时如何设置内容类型
在CXF(v2.6.3)Java 在CXF@WebMethod中呈现自己的响应时如何设置内容类型,java,cxf,content-type,Java,Cxf,Content Type,在CXF(v2.6.3)@WebMethod中进行自己的渲染时,设置内容类型时遇到问题 以下模式可以很好地工作: @Path(“/foo”) @网络服务 公共类餐饮服务{ @路径(“/bar”) @产生({“文本/普通”}) @得到 @网络方法 公共字符串条(){ 返回“hi”; } 这将向http客户端返回“hi”,并返回内容类型:内容类型:text/plain头,这正是我所期望的 但是,当我尝试使用响应OutputStream进行自己的渲染时,正确地返回“hi”,但是@生成的注释被忽略,并
@WebMethod
中进行自己的渲染时,设置内容类型时遇到问题
以下模式可以很好地工作:
@Path(“/foo”)
@网络服务
公共类餐饮服务{
@路径(“/bar”)
@产生({“文本/普通”})
@得到
@网络方法
公共字符串条(){
返回“hi”;
}
这将向http客户端返回“hi”
,并返回内容类型:内容类型:text/plain
头,这正是我所期望的
但是,当我尝试使用响应OutputStream
进行自己的渲染时,正确地返回“hi”
,但是@生成的注释被忽略,并返回默认的文本/xml
内容类型。即使我自己调用设置内容类型(…)
也是如此
@Path(“/heartbeat2”)
@产生({“文本/普通”})
@网络方法
@得到
公共图书馆2({
HttpServletResponse=messageCtx.getHttpServletResponse();
response.getOutputStream().write(“hi.getBytes());
//有或没有该行都会失败
response.setContentType(“文本/普通”);
}
以下是输出:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 2
Connection: keep-alive
Server: Jetty(8.1.9.v20130131)
hi
知道如何将自己的输出直接呈现到输出流并适当设置内容类型吗?请提前感谢。我看不出您所做的有任何错误。至少在HttpServletResponse
中设置内容类型应该可以。无论如何,如果使用,您可以更好地控制返回的内容ode>javax.ws.rs.core.Response
。看看这是否有效:
@Path("/foo")
@WebService
public class FooService {
@Path("/bar")
@GET
@WebMethod
public Response bar() {
return Response.ok().type("text/plain").entity("hi").build();
}
...