10
votes

Un écrivain du corps de message pour type Java, classe net.sf.json.jsonObject et Mime Media Type, Application / JSON, n'a pas été trouvé

J'utilise le client de Jersey pour avoir appelé le service WebService.

Mon service Web consomme le JSON, j'ai donc besoin de mettre JSON en faisant appel à mon fournisseur WebService. P>

Je le fais En bas. p> xxx pré>

mais je reçois la présentation ci-dessous: P>

09: 52: 01.625 Erreur [[MVC-Dispatcher]] Servlet.Service () pour servlet MVC-Dispatcher a jeté une exception com.sun.jersey.api.client.clienthandlerException: un écrivain du corps de message pour type Java, classe net.sf.json.jsonObject et mime Media Type, Application / Json, n'a pas été trouvé fort> chez com.sun.jersey.api.client.Requestwriter.WritEquestity (requierwriter.java:288) chez com.sun.jersey.client.urlconnection.urlconnectionClientClientHandler._invoke (urlconnectionClientHandler.java:204) chez com.sun.jersey.client.urlconnection.urlConnectionClientClientHandler.handle (UrlConnectionClientHandler.java:147) chez com.sun.jersey.api.client.client.handle (client.java:648) chez com.sun.jersey.api.client.webresource.handle (webresource.java:670) à com.sun.jersey.api.client.webresource.access $ 200 $ (WeBresource.java:74) chez com.sun.jersey.api.client.webresource $ Builder.post (webreesource.java:563) à com.nec.jp.pflow.unc.Service.employestservice.AddDeMemployee (employéservice.java:44) à com.nec.jp.pflow.unc.controller.empestyecontroller.addCustomer (employeurecontroller.java:29) sur sun.reflect.nativeméthodaccessorimpl.invoke0 (méthode natif) au soleil.reflect.nativemethodaccessorimpl.invoke (NativeMetHAccessorimpl.java:39) À Sun.Reflect.DelegingdeMethodaccessorimpl.invoke (déléguantMethodaccessorimpl.java:25) P> blockquote>

mais si je convertitais mon json en une représentation de chaîne comme: p> xxx pré>

alors il fonctionne bien. P>

veuillez suggérer comment peut-on Je mets mon objet JSON sans obtenir l'exception ci-dessus. Quel est le meilleur moyen? P>

Merci d'avance. P>


J'ai une solution pour ce qui précède. Maintenant, je fais une utilisation de Jackson-mapper API pour convertir le pojo en Json. P>

ci-dessous est l'extrait de code. P>

ObjectMapper mapper = new ObjectMapper();
ClientResponse response = resource.path("rest").path("vtn").path("addEmplyee")
        .type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, mapper.writeValueAsString(employee)); 


1 commentaires

Si vous avez trouvé une solution, vous pouvez poster cela comme réponse et sélectionnez-le vous-même. Sinon, cette question semble sans réponse.


7 Réponses :


8
votes

Il suffit de copier la solution de la question ci-dessus, juste au cas où quelqu'un cherche une réponse.

Utilisez l'API de Jackson-Mapper pour convertir le pojo en JSON, comme indiqué dans l'extrait de code ci-dessous: xxx


0 commentaires

2
votes
JSONObject object=new JSONObject();
need to provide @XMLrootElement Annotation....if you are accessing the web service from remote....i.e XML Mapping..for Model class.

0 commentaires

0
votes

Vous pouvez également utiliser les méthodes d'entité () pour y parvenir, comme suit: xxx

ou xxx


0 commentaires

5
votes

Ajout d'un .tostring () a fonctionné pour moi: xxx


0 commentaires

0
votes

erreur que m obtenue est un peu différent, mais enfin solution est de travailler pour moi xxx pré>

et c'est une solution fonctionnée pour moi: p>

    Client client = Client.create();
    WebResource webResource = client
            .resource("http://localhost:8080/NewsTickerServices/Siemens/CreateJUser");
    // value added

    ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).post(ClientResponse.class,mapper.writeValueAsString(user));//user is object of User Pojo class 


0 commentaires

12
votes

Un meilleur moyen est de dire jersey-client code> qu'il peut utiliser jackson code> pour la sérialisation: https://stackoverflow.com/a/2580315/516188

coller la configuration: p>

ClientConfig cc = new DefaultClientConfig();
cc.getClasses().add(JacksonJsonProvider.class);
Client clientWithJacksonSerializer = Client.create(cc);


0 commentaires

1
votes

Après que beaucoup de lecture ici est la solution que je suis arrivée à:

Si vous utilisez Jersey-Client comme spécifié ci-dessous de la version 1.9 ou supérieure p> xxx pré>

Ensuite, utilisez le pot moxy comme spécifié ci-dessous de la version 2.19 ou supérieure p>

WebResource webResource = client.resource(*restFulPath*);
Builder builder = webResource.accept(MediaType.APPLICATION_JSON);

builder.header("Content-Type", "application/json");
builder.header("Accept ", "application/json");
builder.accept(MediaType.APPLICATION_JSON);

try
{
    String requestData = "*requestInJson*";
    ClientResponse response = null;
    response = builder.post(ClientResponse.class, requestData);
    if (response.getStatus() == 200)
    {
        MappedJsonReportOut res = response.getEntity(MappedJsonReportOut.class);
    }
}


0 commentaires