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> 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> 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));
7 Réponses :
Il suffit de copier la solution de la question ci-dessus, juste au cas où quelqu'un cherche une réponse. strong> Utilisez l'API de Jackson-Mapper pour convertir le pojo en JSON, comme indiqué dans l'extrait de code ci-dessous: p>
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.
Vous pouvez également utiliser les méthodes d'entité () pour y parvenir, comme suit: ou p>
Ajout d'un .tostring () a fonctionné pour moi:
erreur que m obtenue est un peu différent, mais enfin solution est de travailler pour moi 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
Un meilleur moyen est de dire coller la configuration: p> jersey-client code> qu'il peut utiliser jackson code> pour la sérialisation:
https://stackoverflow.com/a/2580315/516188 ClientConfig cc = new DefaultClientConfig();
cc.getClasses().add(JacksonJsonProvider.class);
Client clientWithJacksonSerializer = Client.create(cc);
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> 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);
}
}
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.