Jersey Json und Pojo

Habe ich damit verbracht, viel zu viele Stunden (über 10 würde ich sagen) versucht, herauszufinden, wie man grundlegende json-Aufrufe (aus angularjs) zu öffnen und den Prozess auf meinem Trikot 2.4.
Ich habe versucht, jede mögliche Folge auf google und bin noch immer ein

415 (Unsupported Media Type)

client-Seite und eine

org.glassfish.jersey.Nachricht.intern.MessageBodyProviderNotFoundException: MessageBodyReader nicht gefunden für media-type=application/json, Typ=class-jersey.webreadability.Controller.jsonmodels.TextInput genericType=class jersey.webreadability.Controller.jsonmodels.TextInput.

auf der server-Seite.

Werde ich hier schreiben, jede mögliche Datei, die ich geändert habe, beim Versuch dieses Problem zu lösen, mit der Hoffnung es wird helfen, jemand, um mir zu helfen.
Im moment habe ich noch nicht wirklich, wie es funktioniert, solange es funktioniert, ich verstehe, dass wer ich sollte wohl dies funktioniert entweder Jackson oder Gson.

Abhängigkeiten (von der POM-Datei):

<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>

aus der 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>

Objekt Klasse:

@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 +
            '}';
}
}

main-Klasse:

@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;
}
}

und 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!');
    });

Dass alles, was ich derzeit habe, ich hoffe es hilft.

Danke so sehr viel.

  • Könnte man diesen Fehler, wenn der Content-Type nicht richtig eingestellt ist. Können Sie überprüfen, auf, die.
InformationsquelleAutor Ido_f | 2013-11-14
Schreibe einen Kommentar