反序列化资源中的 POST 个参数
Deserialise POST paramaters in a resource
来自 django 背景,dw
不是很强,请放轻松!
我有一个资源使用 post 数据如下:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_JSON)
public Response changeStatus(String dataString,
@PathParam("status") Status status) {
HashMap<String, Object> responseMessage = new HashMap<>();
Response.Status respStatus = Response.Status.OK;
// --- ugly stuff to clean things hence the question!!!
// dataString = dataString.replace("dataString=", "").replace("%2C", ",");
// do stuffs
现在,如果我将输入 POST
参数作为 abcd,tklmj,1234cd
传递,资源会将 dataString
作为 dataString=abcd%2Ctklmj%2C1234cd
。
dataString
s 值字面上有 dataString
字,连同 ,
转换为 %2C
,我如何反序列化它们以获取原始输入?如从其值中删除 dataString
和 %2C
。
ajax 来电
var target_url = statusURL + status_text;
data = {"dataString": all_data}
$.ajax({
type: "POST",
url: target_url,
data: data,
success: function(data){
console.log(data)
}
});
我使用的是 dropwizard 1.2.2 版。
使用HashMap处理body中的数据:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_JSON)
public Response changeStatus(HashMap data,
@PathParam("status") Status status) {
获取值
String param1 = (String) data.get(<your param name>)
Resource
期待 JSON 但您发送的是表单编码数据。
您可以将请求更改为发送有效 JSON – 在这种情况下 should work, or change the Resource
to consume form-encoded data and then extract it using FormParam
,即:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response changeStatus(
@FormParam("dataString") String dataString,
@PathParam("status") Status status) {
...
}
来自 django 背景,dw
不是很强,请放轻松!
我有一个资源使用 post 数据如下:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_JSON)
public Response changeStatus(String dataString,
@PathParam("status") Status status) {
HashMap<String, Object> responseMessage = new HashMap<>();
Response.Status respStatus = Response.Status.OK;
// --- ugly stuff to clean things hence the question!!!
// dataString = dataString.replace("dataString=", "").replace("%2C", ",");
// do stuffs
现在,如果我将输入 POST
参数作为 abcd,tklmj,1234cd
传递,资源会将 dataString
作为 dataString=abcd%2Ctklmj%2C1234cd
。
dataString
s 值字面上有 dataString
字,连同 ,
转换为 %2C
,我如何反序列化它们以获取原始输入?如从其值中删除 dataString
和 %2C
。
ajax 来电
var target_url = statusURL + status_text;
data = {"dataString": all_data}
$.ajax({
type: "POST",
url: target_url,
data: data,
success: function(data){
console.log(data)
}
});
我使用的是 dropwizard 1.2.2 版。
使用HashMap处理body中的数据:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_JSON)
public Response changeStatus(HashMap data,
@PathParam("status") Status status) {
获取值
String param1 = (String) data.get(<your param name>)
Resource
期待 JSON 但您发送的是表单编码数据。
您可以将请求更改为发送有效 JSON – 在这种情况下 Resource
to consume form-encoded data and then extract it using FormParam
,即:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response changeStatus(
@FormParam("dataString") String dataString,
@PathParam("status") Status status) {
...
}