xmlを返すSpring3.1MVCWebサービスをセットアップしようとしています。すでにgetxmlforparam()と呼ばれる文字列としてxmlを返すメソッドがあります。以下は、私がこれまでに持っているコードのスニペットです。これは常に正しいコンテンツを返しますが、content-type = text/htmlが間違っています。
以下で試したRequestMappingの生成とresponse.addHeaderの手法以外に、コンテンツタイプを設定する方法はありますか?
@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;
}
ありがとう。
編集:以下のMikeNの提案に従って、応答オブジェクトに直接書き込むことによる解決策:
@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());
}
}
}