2016-07-22 1 views
0

est ici la première partie de mon code:service web RESTful avec GenericType

@Path("compute/{x}") 
@GET 
@Produces(MediaType.TEXT_PLAIN) // "text/plain" 
public List<Double> compute(@PathParam("x") Double x) { 
    List<Double> list = new Vector<Double>(); 
    list.add(Math.log(x)); 
    list.add(Math.exp(x)); 
    return list; 
} 

J'apprends/la construction d'un service Web RESTful. Le client exploitant ce service web RESTful fait comme ça.

javax.ws.rs.client.Client client = ClientBuilder.newClient(); 

WebTarget uri_basique = client 
     .target("http://localhost:8080/Rest_ws/rest"); 

WebTarget targeted_resource = uri_basique.path("simple/compute/{x}") 
     .resolveTemplate("x", 5); 

Builder builder = targeted_resource.request(MediaType.TEXT_PLAIN); 
List<Double> compute = builder.get(new GenericType<List<Double>>(){}); 

System.out.println("log (5) = " + compute.get(0)); 
System.out.println("exp (5) = " + compute.get(1)); 

Il est supposé fonctionner. Mais quand je reçois exercerai je:

javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error 
    ... 
    at ws_rs.Client.test3(Client.java:26) 

La ligne problématique est la ligne:

List<Double> compute = builder.get(new GenericType<List<Double>>(){}); 

Si quelqu'un peut fournir une explication/solution pour moi.

+0

Ce qui apparaît dans vos journaux côté serveur? – DaveH

+0

Je vérifie. attends une minute. – Aucxence

+0

'HTTP 500 Internal Server Error' signifie que votre serveur est hors service. – user3644708

Répondre

1

HTTP 500 Internal Server Error signifie qu'il ya une erreur tout en appelant le reste api. Il semble que le service web n'est pas capable de traduire la liste en "texte/plaine" et par conséquent il est erreur de lancer. Jersey ne fournit pas MessageBodyReader/Writer pour traduire java.util.List en "text/plain". Vous devez fournir un MessageBodyReader/Writer personnalisé pour cela.