Javax / Jersey Service Post - 消耗Json数组

时间:2014-03-27 19:17:50

标签: android rest jersey

我写了一个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上找不到有用的东西...... 谢谢你的帮助;)

1 个答案:

答案 0 :(得分:0)

我还没有解决方案,但解决方法非常好。

您可以创建一个包含列表的新对象,而不是发送ArrayList。

public class DingHolder{

    private ArrayList<Ding> list = new ArrayList<Ding>();

    ... //getter setter constructor

然后您可以插入所需数量的ArrayLists,甚至可以通过此消息提供一些属性......以任何方式提供更好的解决方案。