J'essaie de configurer un service Web Spring 3.1 mvc qui renvoie xml. J'ai une méthode qui retourne le xml comme une chaîne déjà appelée getxmlforparam(). Ci-dessous un extrait du code que j'ai jusqu'à présent qui renvoie toujours le bon contenu mais avec le mauvais type de contenu = text/html.Définition du type de réponse de type contenu dans le service Web Spring 3.1 mvc
Existe-t-il un moyen de définir le type de contenu autrement qu'avec les techniques RequestMapping produit et response.addHeader que j'ai essayé ci-dessous?
@Service
@RequestMapping(value="endpointname")
public class XmlRetriever {
//set up variables here
@RequestMapping(method = RequestMethod.GET, produces = "application/xml")
@ResponseBody
public String getXml(
@RequestParam(value = "param1") final String param1,
/*final HttpServletResponse response*/){
String result = null;
result = getxmlforparam(param1);
/*response.addHeader("Content-Type", "application/xml");*/
return result;
}
Merci.
EDIT: solution en écrivant directement à l'objet de réponse par la suggestion de Miken ci-dessous:
@Service
@RequestMapping(value="endpointname")
public class XmlRetriever {
//set up variables here
@RequestMapping(method = RequestMethod.GET, produces = "application/xml")
@ResponseBody
public String getXml(
@RequestParam(value = "param1") final String param1,
final HttpServletResponse response){
String result = null;
result = getxmlforparam(param1);
response.setContentType("application/xml");
try{
PrintWriter writer = response.getWriter();
writer.write(result);
}
catch(IOException ioex){
log.error("IO Exception thrown when trying to write response", ioex.getMessage());
}
}
}
Une question à propos de votre solution: Est-ce que produit = "application/xml" est toujours nécessaire? –