2017-07-21 14 views
1

私はWebサービスを作成しました。私は内部から別のWebサービスを呼び出します。内部から呼び出す応答メディアの種類に応じて、私は本当の反応を返します。springbootでWebサービス応答のメディアタイプを設定するにはどうすればよいですか?

私が何をしても、すべての応答はJSONオブジェクトとして返されました。

私のWebサービスクラスは次のとおりです。

@RestController 
@RequestMapping("/changeservicemode") 
public class ChangeServiceMode { 

    @RequestMapping(method = RequestMethod.GET) 
    public Response changeMode(@RequestHeader(value = "serviceUrl") String serviceUrl, 
           @RequestHeader(value = "serviceMode") String serviceMode) { 

     IVirtualDocumentService docService = UtilsForSpring.getSingleBeanOfType(IVirtualDocumentService.class); 
     VirtualDocument documentByUrl = docService.findDocumentByVirtualUrl(serviceUrl); 

     String mediaType = MediaType.APPLICATION_XML;//I'll get media type from another response that will call above code in this point 

     if (documentByUrl == null) { 
      return Response.status(Status.NOT_FOUND).type(mediaType).entity("This url not found on DB!").build(); 
     } 

     if (SimulationMode.LEARN.equalsIgnoreCase(serviceMode)) documentByUrl.setSimulationMode(SimulationMode.LEARN); 
     if (SimulationMode.SIMULATE.equalsIgnoreCase(serviceMode)) documentByUrl.setSimulationMode(SimulationMode.SIMULATE); 
     if (SimulationMode.STOP.equalsIgnoreCase(serviceMode)) documentByUrl.setSimulationMode(SimulationMode.STOP); 

     docService.save(documentByUrl); 
     String entity = "url: " + serviceUrl + ", mode: " + documentByUrl.getSimulationMode(); 

     return Response.status(Status.OK).entity(entity).type(mediaType).build(); 
    } 
} 

ここに私の応答です;

{ 
    "context": { 
     "headers": { 
      "Content-Type": [ 
       { 
        "type": "application", 
        "subtype": "xml", 
        "parameters": {}, 
        "wildcardSubtype": false, 
        "wildcardType": false 
       } 
      ] 
     }, 
     "entity": "url: http://localhost:8066/virtual/wsapi/personelvirtual/getallpersonels, mode: SIMULATE", 
     "entityType": "java.lang.String", 
     "entityAnnotations": [], 
     "entityStream": { 
      "closed": false, 
      "committed": false 
     }, 
     "length": -1, 
     "language": null, 
     "location": null, 
     "lastModified": null, 
       . 
       . 
       . 
       . continue.. 

答えて

1

あなたがchangeModeメソッドに設定されている@RequestMappingため

produces = MediaType.APPLICATION_XML_VALUE 

このプロパティを指定してみてください。 docsによれば、それはあなたが望むことをするはずです。

+0

あなたの言ったことを変更しましたが、今は406ステータスエラーがあり、何も表示されていません。 406受け入れられませんこの要求リソースはコンテンツを受け入れることができません。 –

+0

OK !.それは私たちのWebサービスについてではなく、それはクライアントのヘッダ(accept:xml、text、json ..)です。ありがとうございます! –

関連する問題