2012-07-08 52 views
2

我對REST和RESTlet都是全新的東西 - 昨天晚上我得到了所有東西並進行了通信,但今天早上發現的是,我傳入服務器的所有內容都始終爲空。GWT Restlet參數始終爲空

就像一個示例應用程序,我有以下 - 一個用戶對象實體(id,emailAddress和版本)和一個RESTUserProxy對象(id,emailAddress) - 我原本不確定是否可以將Objectify實體傳回並且不能夠看到什麼後,切換到代理對象 - 如果我能得到它的工作這樣我會嘗試切換回

前端如下:

public interface RESTUserResourceProxy extends ClientProxy { 

    @Get 
    public void find(String emailAddress, Result<RESTUserProxy> callback); 

    @Put 
    public void persist(RESTUserProxy user, Result<Void> callback); 

    @Delete 
    public void delete(RESTUserProxy user, Result<Void> callback); 
} 

後端代碼如下(這是目前非常難看 - 我有點沮喪,只是想看到一些東西,並在一堆sysout)

public class RESTUserServerResource extends ServerResource implements RESTUserResource { 

    private final UserDao userDao; 

    public RESTUserServerResource() { 
    System.out.println("CREATED USER RESOURCE IMPL"); 
    userDao = new UserDao(); 
    } 

    @Override 
    @Get 
    public RESTUserProxy find() { 
    System.out.println("reference = " + getReference()); 
    Form queryParams = getReference().getQueryAsForm(); 
    System.out.println("query params = " + queryParams); 
    System.out.println("query = " + getQuery()); 
    System.out.println("query string = " + getQuery().getQueryString()); 
    String searchQuery = (String) getRequest().getAttributes().get("searchQuery"); 
    System.out.println("search query = " + searchQuery) ; 
    return null; 
// if (emailAddress == null) { 
//  return null; 
// } 
// System.out.println("user resource impl find [" + emailAddress + "]"); 
// final User user = userDao.find(emailAddress.getText()); 
// if (user != null) { 
//  System.out.println("found user "); 
//  return new RESTUserProxy(user.getId(), user.getEmailAddress()); 
// } else { 
//  System.out.println("found absolutely nothing"); 
//  return null; 
// } 
    } 

    @Override 
    @Put 
    public void persist(RESTUserProxy userProxy) { 
    System.out.println("user proxy = " + userProxy); 
    if (userProxy == null) { 
     return; 
    } 
    final User user = userDao.find(userProxy.getId()); 
    user.setEmailAddress(userProxy.getEmailAddress()); 
    user.setId(userProxy.getId()); 
    userDao.persist(user); 
    } 

    @Override 
    @Delete 
    public void delete(RESTUserProxy userProxy) { 
    final User user = userDao.find(userProxy.getId()); 
    userDao.delete(user); 
    } 
} 

什麼具有的是,eerythings未來通過爲空的問題IM - 很多其他的答案在這裏說,以獲得查詢來獲取PARAMS - 但這裏的查詢爲空

下面

是調用find的輸出,並持續

reference = http://127.0.0.1:8888/users/123 
query params = [] 
query = [] 
query string = 
search query = null 

我敢肯定,我在做一些愚蠢的事在這裏,我只是不知道如何,現在繼續。任何幫助,我做錯了什麼將不勝感激。

回答

1

這是由於GAE不支持分塊編碼。在這裏看到解決方法: http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html#dsy303-restlet_gwt

+0

啊,完全錯過了 - 謝謝你 – 2012-07-10 23:39:45

+0

我使用的Restlet-2.1-RC5但設置clientResource.setEntityBuffering(真)沒有任何影響有完全一樣的問題(在Android客戶端即在PARAMS。 ,查詢等都仍然爲空 – William 2012-08-24 23:54:01

+1

@ jerome-louvel你提供的鏈接不再工作 – xybrek 2015-01-03 20:39:27