带有标头和JSON的restlet客户端POST请求
您能评论一下这个客户端restlet代码的错误吗 有必要:带有标头和JSON的restlet客户端POST请求,json,post,header,restlet,Json,Post,Header,Restlet,您能评论一下这个客户端restlet代码的错误吗 有必要: 使用值令牌添加HTTP头X-MF-Auth-Token 将JSON文件放在HTTP请求主体中 向服务器发出POST请求 Post请求生成“400”错误。多谢各位 ClientResource cr = new ClientResource(servername + "/json/place"); cr.getRequest().getAttributes().put("X-MF-Auth-Token",
X-MF-Auth-Token
ClientResource cr = new ClientResource(servername + "/json/place");
cr.getRequest().getAttributes().put("X-MF-Auth-Token", token);
Form form = new Form ();
form.add("Category", "");
form.add("CategoryId", "A1EECAB9-3E66-4F14-92E9-465EDFB22BA7");
form.add("Latitude", "0");
form.add("Longitude", "0");
form.add("Name", "Loremipsum");
form.add("PlaceId", "00000000-0000-0000-0000-000000000099");
cr.post(form, MediaType.APPLICATION_JSON);
if (cr.getStatus().isSuccess()) {
// Register Successful
Log.v("Register()", "Successeful");
return true;
} else {
Log.v("Register()", "ERROR");
return false;
}
} catch (ResourceException e) {
// Login Error
Log.v("AddPlace() error:", e.getStatus().toString());
return false;
}
我认为您没有将
X-MF-Auth-Token
添加到标题中
试一试
您可以使用JSONObject而不是表单:
JSONObject jo=new JSONObject();
试一试{
添加(“类别”、“类别”);
新增(“类别”、“A1EECAB9-3E66-4F14-92E9-465EDFB22BA7”);
添加(“纬度”、“0”);
添加(“经度”、“0”);
jo.添加(“名称”、“Loremipsum”);
jo.添加(“PlaceId”,“00000000-0000-0000-0000-0000000000 99”);
}catch(JSONException ex){
}
cr.post(新的JsonRepresentation(jo)、MediaType.APPLICATION_JSON);
谢谢,这很有帮助,但仍然不起作用。有必要将内容类型设置为JSON,但它会发送内容类型:application/x-www-form-urlencoded。有什么想法吗?非常感谢。@mfirry该链接讨论了使用RESTlet服务器端,但没有描述任何关于客户端的内容。OP要求的是客户端。虽然这是很久以前的事了,但是表单默认请求的类型是application/x-www-Form-urlencoded。发送JSON需要不同的数据类型。
Form headers = (Form) cr.getRequest().getAttributes("org.restlet.http.headers");
if (headers == null) {
headers = new Form();
cr.getRequest().getAttributes.put("org.restlet.http.headers", headers);
}
headers.add("X-MF-Auth-Token", token);