Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Restlet客户端如何处理媒体类型的请求?_Java_Json_Http Headers_Restlet - Fatal编程技术网

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

Java Restlet客户端如何处理媒体类型的请求?,java,json,http-headers,restlet,Java,Json,Http Headers,Restlet,我有几个关于Restlet客户端如何处理媒体类型头的新手问题: 如果我传入类型为a)POJO或b)InputStream实例的实体,Restlet客户端将在“content type”头中放入什么?“接受”标题是什么 如果我想在HTTP正文中传输JSON格式的POJO,我需要序列化POJO并将其作为JSON字符串传递,还是只传递POJO,Restlet将完成其余工作?如果是前一种情况,是否需要指定“内容类型”标题以及如何指定 非常感谢 如果依赖ClientResource类,则可以向put调用添

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

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

  • 非常感谢

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

    put(myPojo, MediaType.APPLICATION_JSON);
    
    更新 实际上,extra media type参数定义了远程资源所需的可接受结果类型,但不适用于发送的实体

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

    您可以通过直接调用

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

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

    那么使用MediaType.APPLICATION_JSON作为第二个参数,myPojo将自动序列化为JSON字符串?这是由restlet扩展完成的吗?抱歉,我的初始响应不正确,请参阅上面的更新。非常感谢,这解决了我的问题。通过进一步阅读api文档,我将直接传入JacksonRepresentation实体,但不确定是否不鼓励这样做。@JeromeLouvel与此问题/答案相关,您能否帮助我解决我们面临的问题: