gpt4 book ai didi

java - 找不到 Java 类型 myPackage.Sample 类和 MIME 媒体类型 application/xml 的消息正文编写器

转载 作者:行者123 更新时间:2023-12-01 13:40:18 26 4
gpt4 key购买 nike

我正在使用 Jersey RESTful Web 服务。我如下编写了客户端,但它抛出了我在标题中提到的异常。

public class MyRestClient {
public static void main(String[] args) {
Client client = Client.create();
WebResource resource = client.resource("http://localhost:8080/myapp/rest/a/update/123");
Sample b1 = new Sample("debris");
ClientResponse response = resource.type(MediaType.APPLICATION_XML).put(ClientResponse.class, b1);

}
}

有人告诉我们用 @XmlRootElement 注释 Sample 类。但我不能这样做,因为样本是由第三方生成的。有什么帮助吗?

最佳答案

如果没有看到您的 REST 服务类,这个问题有点难以回答,但我猜您正在尝试将数据作为服务中的示例对象使用,如下所示:

@PUT
public Response updateSample(Sample sample) {
...

但这依赖于 Jersey 能够自动将 XML 数据编码到 Sample 对象中,这需要 Sample 类上的 JAXB 注释,正如您所指出的,并且由于缺少这些注释,您将收到您所描述的错误。

相反,您可以在服务中将其作为字符串使用,如下所示:

@PUT
public Response updateSample(String sampleStr) {
...

但是现在您负责将您的sampleStr 数据解析为xml 并将其转换为Sample 对象(这不一定是坏事)。但是,由于 Sample 类没有针对 XML 进行注释,Jersey 甚至无法将其转换为 XML 以便您的客户端发送。

有关使用 Jersey REST 服务来回传输数据的不同方法的更多信息,请参阅本文:http://usna86-techbits.blogspot.com/2013/08/restful-java-web-service-marshalling.html

如果您将数据作为 JSON 传递,您可能会更轻松地在服务器上手动处理它。请参阅该文章底部的 JUnit 测试类,了解如何执行此操作的想法。

如果您需要更多帮助,请注明您的服务等级。

关于java - 找不到 Java 类型 myPackage.Sample 类和 MIME 媒体类型 application/xml 的消息正文编写器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20868093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com