小编典典

Restlet客户端如何处理请求的媒体类型?

java

关于Restlet客户端如何处理媒体类型标头,我有几个新手问题:

  1. 如果我传入类型a)POJO或b)InputStream实例的实体,Restlet客户端将在“ content-type”标头中放入什么?那么“ accept”头是什么?
  2. 如果我想在HTTP正文中以JSON格式传输POJO,我是否需要序列化POJO并将其作为JSON字符串传递,还是可以仅传递POJO而Restlet会完成其余的工作?如果是前一种情况,我是否需要指定“ content-type”标头以及如何指定?

非常感谢!


阅读 305

收藏
2020-11-30

共1个答案

小编典典

如果您依赖ClientResource类,则可以将MediaType参数添加到您的put调用中,例如

put(myPojo, MediaType.APPLICATION_JSON);

更新 实际上,额外的媒体类型参数定义了远程资源期望的可接受结果类型,但不适用于发送的实体。

对发送的实体/ POJO的媒体类型的控制基于ConverterService的默认设置,该默认设置取决于类路径上可用的扩展及其各自的顺序。

您可以通过直接调用

ClientResource cr = new ClientResource("http://targetDomain/path");
cr.put(cr.toRepresentation(myPojo, new Variant(MediaType.APPLICATION_JSON));

您还需要在类路径及其依赖项上添加org.restlet.ext.jackson扩展名。XStream扩展是另一种选择。

2020-11-30