Java JAX-RS客户端PUT/POST请求:无法在主体中创建实体(对象)
我使用bog标准JAX-RS客户机代码,如下所示(借用自 ):Java JAX-RS客户端PUT/POST请求:无法在主体中创建实体(对象),java,rest,jax-rs,Java,Rest,Jax Rs,我使用bog标准JAX-RS客户机代码,如下所示(借用自 ): ... Entity.json(amount); 现在,它失败了,就像返回400个错误请求一样 ... Entity.json(amount); 在接收端,发送的实体(金额)为空。知道为什么吗 ... Entity.json(amount); 我正在签入调试器,实体得到了一个真实的值,但是如果我构建一个test@Post end point,如下所示: @PutMapping(value = "/account/{accoun
...
Entity.json(amount);
现在,它失败了,就像返回400个错误请求一样
...
Entity.json(amount);
在接收端,发送的实体(金额
)为空。知道为什么吗
...
Entity.json(amount);
我正在签入调试器,实体得到了一个真实的值,但是如果我构建一个test@Post end point,如下所示:
@PutMapping(value = "/account/{accountUid}/savings-goals/{savingsGoalUid}/add-money/{transferUid}")
public Response getUserHistory(String amount,
@PathVariable("accountUid") UUID accountUid,
@PathVariable("savingsGoalUid") UUID savingsGoalUid,
@PathVariable("transferUid") UUID transferUid) {
log.info("Amount: " , amount);
return null;
}
...
Entity.json(amount);
这确实确认了金额为空
...
Entity.json(amount);
有什么帮助吗?一端的金额是一个对象,另一端的金额是一个简单的字符串。您是否尝试过创建
Amount
类的getUserHistory
方法
...
Entity.json(amount);
然后你可以这样做:
@PutMapping(value = "/account/{accountUid}/savings-goals/{savingsGoalUid}/add-money/{transferUid}")
public Response getUserHistory(Amount amount,
@PathVariable("accountUid") UUID accountUid,
@PathVariable("savingsGoalUid") UUID savingsGoalUid,
@PathVariable("transferUid") UUID transferUid) {
log.info("Amount: " , amount);
return null;
}
...
Entity.json(amount);
如果您希望接收json,那么我认为将完整的json对象映射到字符串是行不通的
...
Entity.json(amount);
希望这有帮助 希望能对某人有所帮助的答案是:
...
Entity.json(amount);
最后一点:
...
Entity.json(amount);
未为Amount
生成所需的JSON结构。所需:
...
Entity.json(amount);
{
"amount": {
"currency": "GBP",
"minorUnits": 1
}
}
生成:
...
Entity.json(amount);
{ "currency": "GBP",
"minorUnits": 1
}
为了解决这个问题,我在我的Amount
类中添加了以下两个注释:
...
Entity.json(amount);
@JsonTypeName("amount")
@JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME)
public class Amount {
private String currency;
private long minorUnits;
}
这产生了所需的JSON格式
...
Entity.json(amount);
为了检查请求中JSON的值,我使用了以下命令:
...
Entity.json(amount);
response.readEntity(String.class)
打印了
金额的JSON字符串
是什么阻止了您创建自己的响应类型和添加错误消息?谢谢您,没有传递任何金额-log语句只打印金额:
。我不认为这是一个转换的事情-否则我会得到一个错误的媒体例外或类似的东西,我想。问题是:请求正文中没有传递任何内容:(
...
Entity.json(amount);