Ho sviluppato un servizio Web in java utilizzando il framework dropwizard. Voglio che consumi un json.Passaggio da JSON a WebService
Il mio codice servizio è -
- Classe Resource
@Path(value = "/product")
public class ProductResource{
@POST
@Path(value = "/getProduct")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Product getProduct(InputBean bean) {
// Just trying to print the parameters.
System.out.println(bean.getProductId());
return new Product(1, "Product1-UpdatedValue", 1, 1, 1);
}
}
- InputBean è una classe bean semplice.
public class InputBean {
private int productId;
private String productName;
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName= productName;
}
public int getProductId() {
return productId;
}
public void setProductId(int productId) {
this.productId= productId;
}
}
Codice Cliente -
public String getProduct() {
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/product/getProduct");
JSONObject data = new JSONObject ("{\"productId\": 1, \"productName\": \"Product1\"}");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, data);
return response.getEntity(String.class);
}
sto ricevendo un errore -
ClientHandlerException
qualcosa che non va con questo pezzo di codice?
JSONObject data = new JSONObject ("{\"productId\": 1, \"productName\": \"Product1\"}");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, data);
Qualcuno può indicarmi cosa potrei mancare?
diari dei clienti -
Si prega di inviare i registri dal server. Inoltre, da dove viene la classe 'WebResource'? – chrylis
Registri aggiunti ... Sto usando il framework dropwizard, è la classe di risorse da esso. – webExplorer
Il registro mostra che la classe viene inviata al server come 'application/octet-stream'.Per il debug futuro, provare a utilizzare un client REST basato su browser per inviare richieste come questa manualmente per cercare di restringere il punto in cui si trova il problema. – chrylis