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

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

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

非常感谢!

如果依赖ClientResource类,则可以向put调用添加MediaType参数,例如

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扩展是另一种选择。