在下一个代码的情况下选择合适的Web服务方法的逻辑是什么?
客户端:
HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("admin", "admin");
final Client client = ClientBuilder.newClient();
client.register(feature);
final Response response = client.target(webServiceURI).request().get();
System.out.println(response.getMediaType());
服务:
@Path("/helloworld")
public class HelloWorld {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello World RESTful Jersey!";
}
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello World RESTful Jersey"
+ "</hello>";
}
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello World RESTful Jersey"
+ "</title>" + "<body><h1>" + "Hello World RESTful Jersey"
+ "</body></h1>" + "</html> ";
}
}
为什么响应媒体类型为text/html
?定义它的规则是什么?如果我需要text/xml
作为回应怎么办?
答案 0 :(得分:3)
我认为请求中的接受标头定义了响应应该采用的格式。有关详细信息,请参阅以下链接:MSDN
我希望答案有所帮助。
答案 1 :(得分:3)
您的容器可能会使用请求中的Accept标头来确定要调用的三种方法中的哪一种。如果请求仅在Accept标头中包含text / plain,它将调用返回text / plain等的文本/ plain。此处的内容协商文档中的更多信息:https://docs.jboss.org/resteasy/docs/2.2.0.GA/userguide/html/JAX-RS_Content_Negotiation.html