Java Restlet:找不到此表示形式的转换器:[application/repo.foo+xml]

Java Restlet:找不到此表示形式的转换器:[application/repo.foo+xml],java,rest,restlet,Java,Rest,Restlet,我正在尝试从web服务检索资源,但收到以下警告: WARNING: Unable to find a converter for this representation : [application/repo.foo+xml] 我的代码返回空实体。这是代码 Engine.getInstance().getRegisteredClients().clear(); Engine.getInstance().getRegisteredClients().add(new HttpClientHelpe

我正在尝试从web服务检索资源,但收到以下警告:

WARNING: Unable to find a converter for this representation : [application/repo.foo+xml]
我的代码返回空实体。这是代码

Engine.getInstance().getRegisteredClients().clear();
Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null));
Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());

ClientResource resource = new ClientResource(path);
ChallengeScheme scheme = ChallengeScheme.HTTP_BASIC;
ChallengeResponse auth = new ChallengeResponse(scheme, "user", "password");

resource.setChallengeResponse(auth);

Repo entity = resource.get(Repo.class);
System.out.println(entity);
更新

我的尝试不幸无效:

resource.getRequestAttributes.putorg.restlet.http.headers,新MediaTypeapplication,application/repo.foo+xml

resource.setAttributeContent-Type,application/repo.foo+xml


你的问题有些混乱

你正在写一个客户。您可以告诉客户端设置一个接受头。简单地说,这是对服务器的一个提示,提示您希望响应的内容类型。JSON、HTML、XML等等。服务器可以尊重这一点,向您发送它的最佳猜测或完全忽略它


您可以尝试将accept头设置为application/javascript,并查看它如何响应。如果它继续发送application/repo.foo+xml,那么您可能能够使用jackson xml数据绑定包对其进行解析。您可能需要向客户端注册媒体类型和转换器,以便客户端知道要使用哪个转换器来序列化对象。

正在使用jackson无法识别的内容类型将其发回。完整的响应是什么样的?如果是JSON,那么服务器需要为其设置正确的内容类型。如何在Restlet中设置内容类型?这一个resource.setAttributeContent-Type,application/repo.foo+xml;不起作用。这将设置客户端重音类型。如果服务器愿意,它可以忽略它。事实上,这是如何注册自定义媒体类型的问题。我花了很多时间在研究上,但我没有找到任何解决办法。现在我看到Restlet是一个非常糟糕的文档库。Restlet在实际中是一本优秀的书。我稍后会帮你查的。我以前在服务器端做过这项工作,我会看看它是否也能正常工作。