2014-02-13 35 views
0

我正在使用Restlet framework獲取POST發送的參數,但我找不到方法。在Restlet框架中通過POST獲取值

這裏是我與獲取工作:

@Get 
    public StringRepresentation represent() { 
     String search = getQuery().getValues("search"); 
     String folder = getQuery().getValues("folder"); 

     LinkedHashMap<String, String> list = search(search, folder); 
     return new StringRepresentation(JSONObject.toJSONString(list), MediaType.APPLICATION_JSON); 
    } 

我應該怎麼做才能從POST數據?


更新 還是有問題獲得415 Unsupported Media Type嘗試此方法後:

@Post("json") 
    public StringRepresentation represent(Representation entity) { 
     final Form form = new Form(entity); 
     String name = form.getFirstValue("search"); 

     return new StringRepresentation(name, MediaType.APPLICATION_JSON); 
    } 

欲瞭解更多信息,我通過PHP使用cURL使POST請求。


更新2 通過消除("json")我沒有得到錯誤信息了,但name變量是空的。


更新3 這是我使用的PHP代碼:

public function restful(){ 
    $result = $this->callAPI('POST', 'http://localhost:8182/xxxx', array('search'=> 'demo', 'folder' => 'xxxxxx')); 
    print_r($result); 
    die(); 
} 


// Method: POST, PUT, GET etc 
// Data: array("param" => "value") ==> index.php?param=value 

public function callAPI($method, $url, $data = false){ 
    $curl = curl_init($url); 

    switch ($method) 
    { 
     case "POST": 
      curl_setopt($curl, CURLOPT_POST, 1); 

      if ($data){ 
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
      } 
      break; 
     case "PUT": 
      curl_setopt($curl, CURLOPT_PUT, 1); 
      break; 
     default: 
      if ($data){ 
       $url = sprintf("%s?%s", $url, http_build_query($data)); 
      } 
    } 

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

    $curl_response = curl_exec($curl); 
    curl_close($curl); 

    return $curl_response; 
} 
+1

也許使用「@Post」而不是「@Get」?還是我誤解了這個問題? –

+0

我已經嘗試過,但似乎還不夠。我收到一條消息:「Unsupported Media Type」 – Alvaro

+0

Error type 415?很多人都有同樣的問題......你能詳細說明一下嗎? –

回答

4

你可以做這樣的事情

@Post("json") 
public void someMethod(Representation rep){...} 

您可以用JSON內容類型你可以處理。

如果帖子來自簡單的html表單,那麼您可以從表示中獲取Form對象,並從中提取參數。

@Post 
public void someMethod(Representation entity){ 
    final Form form = new Form(entity); 
    String name = form.getFirstValue("name")); 
} 

請注意,您還可以從查詢字符串構造表單對象。

+0

然後我如何獲取參數? – Alvaro

+0

我編輯了我的帖子。 – tom

+0

仍然有同樣的問題。我正在更新我的問題,我現在正在嘗試迴應後的問題。 – Alvaro