【发布时间】:2014-02-13 16:25:15
【问题描述】:
我正在尝试使用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;
}
【问题讨论】:
-
也许使用“@Post”而不是“@Get”?还是我误解了这个问题?
-
我已经尝试过了,但似乎还不够。我收到一条消息说
Unsupported Media Type -
错误类型 415?很多人都有同样的问题……你能详细点吗?
标签: java restlet restlet-2.0