2011-09-14 80 views
0

我嘗試在Jersey中與Java一起實現一個restful web服務。 爲了在客戶端和服務器端進行通信,我正在關注XML。 我已經試過JSON。Jersey使用XML的REST滿服務(需要在JSON對象之外封裝)

當使用JSON中,封裝在類似於POJO的對象:

@XmlRootElement 
public class MyPojo { 
    public int a; 
    public int[] b; 
} 

然後我得到了在休息級頭像

public String classname(MyPojo p) 

但我需要像頭

public String classname(int a, int [] b) 

通過閱讀Rest-Headers自動創建Form-Elements。 一個例子顯示我:

@Consumes("application/xml") 
public classname methodname(@QueryParam("a") Integer a, @QueryParam("b") IntArray b) 

應該工作。 問題:如何爲此方法創建XML請求(如XML中的JSON.stringify())?這樣做有沒有更好的方法?

回答

0

不知道我是否理解這個問題,但會嘗試提供一些提示 - 希望至少有一些提示是相關的。如果沒有,請分享有關您的應用程序的更多信息(例如,這是針對GET還是POST請求?爲什麼重要的是要有2個獨立的參數等)

如果您需要在請求實體中發送XML或JSON在POST請求中),那麼不可能在多個參數中檢索這些參數 - 您必須像上面一樣使用單個對象參數。你可以做的是:

@POST 
@Consumes("application/xml") 
public ClassName postMethod(MyPojo p) { 
    return postMethod(p.a, p.b); 
} 

public ClassName postMethod(int a, int[] b) { 
    // do something 
} 

或者,如果你真的不需要XML/JSON,如果您使用的HTML表單張貼,通常你執行以下操作:

@POST 
@Consumes("application/x-www-form-urlencoded") 
public ClassName postMethod(@FormParam("a") Integer a, @FormParam("b") String b /*I think arrays are not supported - will have to parse it yourself*/) { 
    // do something 
} 
相關問題