我想使用Restlet framework获取POST发送的参数,但我找不到方法。
以下是我使用GET的原因:
@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);
}
有关更多信息,我正在使用cURL通过PHP发出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;
}
答案 0 :(得分: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"));
}
请注意,您还可以从查询字符串构造Form对象。