解析与球衣/ apache的REST客户端多行,多列文本响应
问题描述:
我想打一个REST终点,返回多行,多列的反应,如:解析与球衣/ apache的REST客户端多行,多列文本响应
A1 B1 C1 A2 B2 C2 A3 B3 C3 ... ...
我目前使用球衣客户端来击中这个端点,并试图寻找最好的方式来解析这个响应。在这里,每行代表一个bean,例如MyBean
,并且每一行代表该bean中的一个属性。响应中值的顺序始终是固定的。
我可以将响应作为一个长字符串返回,将它拆分为换行符和制表符以获取单个值。
不过,我想知道是否有一种方法,我可以得到的结果作为List<String>
,凡在List
每个元素将是一个线的响应。然后,我可以将它拆分为\t
以获取单个值。
这是我已经试过:
WebResource resource = client.resource(NETSPEAK_URL)
.type(MediaType.TEXT_PLAIN)
.get(new GenericType<List<String>>(){});
但是这会导致以下异常:
A message body reader for Java class java.util.List,
and Java type java.util.List<java.lang.String>,
and MIME media type text/plain; charset=UTF-8 was not found
如果我甚至贪婪,我想知道如果我能得到个人列值映射到我的bean的属性,MyBean
。我曾考虑过在MyBean
周围创建一个包装,以获得MyBean
的列表,但是如何对它进行注释以帮助解析?这对于xml/json响应是有意义的。但这是纯文本。
是否有可能以某种方式告诉泽西客户端有关此文本/纯文本响应的解析?如果这是通过Apache HTTP客户端实现的,那么我已经准备好了。
感谢
答
您可能要实现代表bean的名单一类,说class BeanList extends List<Bean>
,并实施MessageBodyReader<BeanList>
(见http://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/ext/MessageBodyReader.html)任教的球衣如何读取字符串作为BeanList
。
然后,您可以使用BeanList.class
而不是List<String>
作为get
调用的参数。