我有一个REST Web服务,允许我通过POST请求以JSON格式上传用户详细信息。看起来我可以使用
来做到这一点public class BreweryViewModel
{
public bool HasBeers { get; set; }
// other properties
}
public class BreweryController
{
public ActionResult Index()
{
var breweryVM = ...
var beers = ...
breweryVM.HasBeers = beers.Any();
return View(breweryVM);
}
}
"条目"是一个ArrayList< MapString,Object>
正如您在下面的JSON中所看到的,我还可以选择为每个用户发送多个条目(在本例中为地址详细信息),如此JSON示例所示:
post.addArgument("Name",entry.get("Name").toString());
post.addArgument("JobRole",entry.get("JobRole").toString());
我尝试过使用
{
"Name":"Fred Flintstone",
"JobRole":"Quarry worker",
"Address":[
{
"Address1" :"Boulder House",
"Address2" :"Rock Way",
"Address3" :"Rock City"
}
]
}
将地址下的用户条目组合起来,但我得到了" 400:错误请求"回。那么如何在我的请求中添加这样的多个条目呢?
此致
答案 0 :(得分:1)
这些是POST样式参数,它们被添加为常规HTTP参数而不是JSON(就像在HTML中提交表单一样)。
您正在寻找的是:
ConnectionRequest cr = new ConnectionRequest(url, true) {
protected void buildRequestBody(OutputStream os) throws IOException {
// snipped this but you should get the rest...
os.write("{\"Name\":\"Fred Flintstone\",\"JobRole\":\"Quarry worker\", ...");
}
};
或者,您可以使用new terse REST API:
Map<String, Object> jsonData = Rest.post(myUrl).body(bodyValueAsString).getAsJsonMap();