Restlet客户端如何处理媒体类型的请求?
我有几个关于Restlet客户端如何处理媒体类型标题的新手问题:
- 如果我传入一个类型为a)POJO或b)一个InputStream实例的实体,Restlet客户端会在’content-type’标头中放入什么? 什么是“接受”标题?
- 如果我想在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扩展是另一种选择。