我不确定为什么以下产生和消费" text / plain"因为我们正在处理字节。
根据oracle:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
字节为8位,"的最小值为-128,最大值为127(包括)。"那么这与" text"?
有什么关系呢?@Path("/")
public class MyService
{
@GET
@Produces("text/plain")
public byte[] get()
{
return "hello world".getBytes();
}
@POST
@Consumes("text/plain")
public void post(byte[] bytes)
{
System.out.println(new String(bytes));
}
}
我可以理解Post明确地生成文本作为它的字符串。
请保持答案可以理解。再次感谢。
答案 0 :(得分:3)
String是一个字符列表。每个字符都指向charset表中的值。因此,如果您查看ASCII或UTF-8表格,您会看到小数值65指向首都' A'。
使用此信息,您可以从一个字节转换为字符串并返回:
new String(new byte[] {65}) // A
"A".getBytes("UTF-8")[0] // 65
如果您有一个restful资源,您的JAX-RS运行时将为您使用@Produces("text/plain")
指定的ContentType选择相应的MessageBodyWriter。此MessageBodyWriter知道如何将byte []转换为text/plain
。
但正如@Thilo已经评论过:返回字符串似乎更清晰(只要你不读取文件中的字节[]并且不想将其转换为字符串在你自己)。