2015-01-02 44 views
0

我在與客戶的Restlet調用工作休息服務問題:使用的Restlet ClientResource不能發送實體的Restlet服務

final ClientResource resource = new ClientResource(Routes.PUBLIC_STORE_API); 
    resource.setOnResponse(new Uniform() { 
     public void handle(Request request, Response response) { 
      try { 
       Status status = response.getStatus(); 
       if(!Status.isError(status.getCode())){ 
        String jsonResponse = response.getEntity().getText(); 
       } else { 
        // Handle error 
       } 
      } catch (Exception e){ 
       callback.failure(new Throwable(e.getMessage())); 
      } 
     } 
    }); 
    JsniHelper.consoleLog("Adding object id=" + id + " type=" + type + " data=" + jsonObject); 
    resource.getReference().addQueryParameter("type", type); 
    resource.getReference().addQueryParameter("id",id); 
    resource.post(jsonObject, MediaType.APPLICATION_JSON); 

在日誌中的對象上的點是有效的JSON字符串。

的的Restlet ServerResource能夠同時獲得idtype絃樂但是實體總是null

@Post("json") 
public Representation add(Representation entity){ // omitted } 

我試圖用捲曲和REST服務能夠正確處理JSON字符串。

GWT中我的代碼有什麼問題?

更新:我在POM

<dependency> 
     <groupId>org.restlet.gae</groupId> 
     <artifactId>org.restlet.ext.gwt</artifactId> 
     <version>2.2-RC3</version> 
    </dependency> 
+0

你能分享你所用的'curl'命令,所以我們可以看到,它與上面列出的Java相匹配? –

+0

我在這裏做了另一個測試:'curl -H「Content-Type:application/json」-d'{「username」:「xyz」,「password」:「xyz」}'http:// localhost:8888/publicstore ?id = null&type = user' – xybrek

+0

上面的一個工作並能夠保存到數據存儲中,GWT的後調用(使用Restlet GWT)總是失敗。然而,我有另一個調用get調用類似的代碼,並且工作正常。此外,查詢參數可以,服務器獲取它,只有表示實體爲空。 – xybrek

回答

0

有這種爲了使這個調用運行做以下事情:

  • 添加JSON的擴展名(org.restlet.ext。 json.jar)從GWT版本中抽取到您的項目中
  • 將以下依賴項添加到您的GWT模塊中

  • 然後更新您的代碼如下:

    resource.post(新JsonRepresentation(MediaType.APPLICATION_JSON,JSONObject的));

我注意到它的作品,如果你發送一個表示,而不是一個對象。 主要的問題是,當處理一個對象時,核心模塊不會如何序列化它。在JVM中,我們可以插入一個發現可用轉換器的服務,該轉換器將bean自動轉換爲表示形式,但我們無法使用GWT來實現這一點。儘管如此,我認爲你可以通過使用bean來以更簡單的方式集成客戶端和服務器代碼。 GWT客戶端代碼可以使用特定的GWT序列化格式進行通信,任何其他使用JSON的客戶端代碼都可以進行通信。

看一看這段代碼:http://restlet.com/technical-resources/restlet-framework/guide/2.3/introduction/first-steps/first-application

+0

我更新框架以便在這種情況下添加跟蹤。這將有助於調試。 –

+0

你好,你也可以檢查這個問題:http://stackoverflow.com/questions/28271860/bean-validation-annotation-breaks-reslet-clientproxy – xybrek