我写了一个Javax / Jersey服务。我的@POST方法有问题消耗在Json中解析的arrayList。我无法想象为什么这不起作用。什么都没发生。没有错误 - 没什么。如果我对一个对象做同样的事情就可以了。
有关我的设置的更多信息:
jsersey-bundle-1.9.jar
asm-3.1.jar
jsr311-api-1.1.jar
set up the server with jesersy's httpserver
首先发布我的应用程序:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(params[0]);
String json = "";
Ding obj1 = new Ding("Sebastian", 3456, 93);
Ding obj2 = new Ding("adsasd", 12, 1);
List<Ding> list = new ArrayList<Ding>();
list.add(obj1);
list.add(obj2);
Gson gson = new Gson();
json = gson.toJson(list);
Log.d("", json);
StringEntity se = new StringEntity(json);
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse httpResponse = httpClient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
result = read(inputStream);
json字符串如下所示:
[{"name":"Sebastian","grosse":93,"gewicht":3456},{"name":"adsasd","grosse":1,"gewicht":12}]
应该接收数组的POST-Method:
如果我将List<Ding> ding1
替换为Ding ding
,一切正常。但随着arraylist没有任何反应。甚至没有错误。
@POST
@Path( "putArray")
@Consumes( MediaType.APPLICATION_JSON )
@Produces( MediaType.APPLICATION_JSON )
public List<Ding> putDingArray( List<Ding> ding1){
System.out.println("Los gehts: ");
for(int i = 0; i < ding1.size(); i++){
System.out.println(ding1.get(i).getName());
System.out.println(ding1.get(i).getGewicht());
System.out.println(ding1.get(i).getGrosse());
}
return ding1;
}
丁类不包括填充构造函数和getter / setter
@XmlRootElement
public class Ding {
private int gewicht;
private int grosse;
private String name;
public Ding(){
}......
其他问题:
是正确的POST吗?也许放? 转移arraylist不常见吗?我在Google上找不到有用的东西...... 谢谢你的帮助;)
答案 0 :(得分:0)
我还没有解决方案,但解决方法非常好。
您可以创建一个包含列表的新对象,而不是发送ArrayList。
public class DingHolder{
private ArrayList<Ding> list = new ArrayList<Ding>();
... //getter setter constructor
然后您可以插入所需数量的ArrayLists,甚至可以通过此消息提供一些属性......以任何方式提供更好的解决方案。