Maillot Json et Pojo

J'ai passé beaucoup trop d'heures (plus de 10 je dirais) à essayer de comprendre comment obtenir de base json appels (de angularjs) d'ouvrir et de processus sur mon Maillot 2.4.
J'ai tout essayé, résultat sur google et je suis toujours d'obtenir un

415 (Unsupported Media Type)

côté client et un

org.glassfish.jersey.message.interne.MessageBodyProviderNotFoundException: MessageBodyReader pas trouvé le type de support=application/json, type=classe de jersey.webreadability.les contrôleurs.jsonmodels.TextInput, genericType=classe de jersey.webreadability.les contrôleurs.jsonmodels.TextInput.

sur le côté serveur.

Je vais écrire ici chaque fichier que j'ai modifié tout en essayant de résoudre, avec l'espoir que cela aidera quelqu'un pour m'aider.
Pour le moment, je ne me soucie pas vraiment comment ça va fonctionner aussi longtemps que cela fonctionne, je ne comprends celui que je devrais probablement obtenir ce travail avec Jackson ou Gson.

Dépendances (à partir de la POM Fichier):

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

de l'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>

La classe de l'objet:

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

classe principale:

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

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

C'est tout j'ai actuellement, j'espère que cela aide.

Je vous remercie beaucoup.

Vous pouvez obtenir ce message d'erreur si le Type de Contenu n'est pas défini correctement. Pouvez-vous vérifier sur.

OriginalL'auteur Ido_f | 2013-11-14