gpt4 book ai didi

java - 泽西 Json 和 Pojo

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:25 26 4
gpt4 key购买 nike

我花了太多时间(我会说超过 10 个小时)试图弄清楚如何获取基本的 json 调用(来自 angularjs)以在我的 Jersey 2.4 上打开和处理。我已经在谷歌上尝试了所有可能的结果,但仍然得到

415 (Unsupported Media Type)

客户端和

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=application/json, type=class jersey.webreadability.controllers.jsonmodels.TextInput, genericType=class jersey.webreadability.controllers.jsonmodels.TextInput.

在服务器端。

我会在这里写下我在尝试解决此问题时更改过的所有可能的文件,希望它能对帮助我的人有所帮助。目前我真的不在乎它会如何工作,只要它能工作,我确实理解我应该与 Jackson 或 Gson 一起工作的任何人。

依赖项(来自 POM 文件):

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json</artifactId>
<version>2.0-m05-1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.17.1</version>
</dependency>

来自 Web.xml:

<servlet>
<servlet-name>webReadability</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>jersey.webreadability.controllers</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.algo.server.webservice;org.codehaus.jackson.jaxrs</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

对象类:

@XmlRootElement(name = "TextInput")
public class TextInput implements Serializable {

@XmlElement public String url;
@XmlElement public String text;
@XmlElement public String file;

public TextInput() {
}

public TextInput(String url, String text, String file) {
this.url = url;
this.text = text;
this.file = file;
}

@Override
public String toString() {
return "TextInput{" + "url=" + url + ", text=" + text + ", file=" + file +
'}';
}
}

主类:

@Path("/analysisController")
public class AnalysisController {

@POST
@Path("/sayHello")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public String sayHello(final TextInput text) {
System.out.println("printing out the sent text: " + text);

return "hello " + text.file;
}
}

和 js:

var mockDataForThisTest = "json=" + encodeURI(JSON.stringify([
{
url: "http://www.example.com",
text: "txext text tex",
file: $scope.textarea
}
]));

var httpRequest = $http({
method: 'POST',
url: '/rest/analysisController/sayHello/',
data: mockDataForThisTest,
headers: {
'Content-Type': 'application/json'
}
}).success(function(data, status) {
$scope.textarea = data;
console.log(data);
}).error(function(error) {
console.log('error!');
});

这就是我目前的全部,希望对您有所帮助。

非常感谢。

最佳答案

我将此添加为我自己的答案,因为我认为这将有助于将来拥有可怕的 Jersey 工作副本的任何人。同时,@Michal Gajdos的回答非常有帮助,以后遇到问题的时候也要引用他的文字。

最终帮助我的是一个 dependency,它几乎包含了你需要的所有东西。只需添加并试一试

<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.2.3</version>
</dependency>

来源:Git

关于java - 泽西 Json 和 Pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967373/

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