2013-03-20 112 views
0

我有一個web服務,並從這個web服務,我應該傳遞一個obejct到另一個服務。我嘗試使用@Pathparam和@QueryParam,但Iam沒有獲取我的服務中的值。將對象傳遞給另一個web服務

我在哪裏傳遞對象的代碼是

public void MediatorCmpService() { 
    ClientConfig config = new DefaultClientConfig(); 
    Client client = Client.create(config); 
    WebResource service = client.resource(getBaseURI()); 
    boolean flag = validateConfig(iFGetResponse); 

    if (flag) { 
     CustomerData customerData = transformationPayload(iFGetResponse); 
     TrilliumxmlProducer tri=new TrilliumxmlProducer(customerData); 
    } 
    System.out.println(flag); 
} 

在這裏,我傳遞customerData反對我TrilliumxmlProducer服務。但是,這對象沒有被傳遞到TrilliumxmlProducer服務

的TrilliumxmlProducer的代碼是

@Path("/generateTrillium") 
public class TrilliumxmlProducer { 
    // This method is called if XMLis request 
    public TrilliumxmlProducer(CustomerData customerData) throws JAXBException { 

     getXML(customerData); 
     // TODO Auto-generated constructor stub 
    } 

    @GET 
    @Produces({ MediaType.APPLICATION_XML }) 
    public CustomerData getXML(@QueryParam("customerData") CustomerData customerData) throws JAXBException { 
     System.out.println("--------2----------" + customerData.getREQUESTTYPE()); 

     return customerData; 
    } 
} 

這裏我的目標是給空指針異常。任何人都可以幫我在這裏

回答

0

你似乎沒有在你的請求中傳遞QueryParameter。

PathParam用於從Path中提取數據,即「endpoint/{id}/help」,那麼PathParam「id」將返回「endpoint /」和「/ help」之間的任何內容。

QueryParam用於從Query中提取數據,即「endpoint/help?id =」,那麼QueryParam將返回您擁有的任何內容而不是您的請求。

雖然技術上合法,但您應該儘量避免混合和匹配,只使用一種或另一種。

編輯

此外,雖然我不能肯定,我很有信心,你不能/不應該使用的對象圖以繞過您的休息資源。

+0

感謝您的回覆所以我是否可以將該對象直接傳遞給服務方法,即在服務方法中我可以接受作爲公共CustomerData getXML(CustomerData customerData) – user1984839 2013-03-20 14:04:34

+0

我不太確定你要做什麼。如果你想傳遞一個對象,你應該用JSON或者XML(在請求體中),使用POST(創建)或者PUT(用於更新)。 RESTFul web服務通常只使用GET進行讀取/讀取操作。 – 2013-03-20 14:09:06

相關問題