解析与球衣/ 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调用的参数。