2017-12-20 21 views
0

내가 JAX-RS와 기본적인 웹 서비스를 구축하고 GET 방식에서 XML 응답 유형을 얻을 어차피JAX-RS는

여기 GET 방법이다 : 그것은 내가하지만이

그것은 잘 보인다
/** 
* Returns all songs 
* @return all songs 
*/ 
@GET 
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 
public Collection<Song> getAllSongs() { 
    return SongsRXStore.getInstance().getAllSongs(); 
} 

/** 
* Returns song with id: "id" 
* @param id the "id" 
* @return song with id: "id" 
*/ 
@GET 
@Path("/{id}") 
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 
public Response getSong(@PathParam("id") Integer id) { 
    Song song = SongsRXStore.getInstance().getSongById(id); 
    if (song != null) 
     return Response.ok(song).build(); 
    else 
     return Response.status(Response.Status.NOT_FOUND) 
       .entity(Response.Status.NOT_FOUND + ": No Song found with id " + id).build(); 
} 

그대로 XML 형식을 다시 가져올 수 없습니다.

여기서 모든 노래 (위의 첫 번째 방법)는 json 및 xml로 요청합니다. 볼 수 있듯이 json 만 올바르게 반환되지만 xml은 반환되지 않습니다. enter image description here

가 어떻게 그것을하시기 바랍니다 작동 할 수 있습니다 : 하나의 특정 노래 (위의 두 번째 방법 양식을) 요청과 같은 enter image description here

?

편집 : @XmlRootElemnt 태그는 allready 내 POJO_Bean Song.java에 추가 물론이다

@XmlRootElement(name = "song") 
public class Song { 
+0

** 이미지로 ** ** 이미지로 코드를 포함하십시오. 고마워. – zx485

+0

확인 완료, 내 문제에 대한 해결책이 있습니까? –

답변

1

하나 이상의 미디어 타입은 같은 @Produces 선언에서 선언 할 수있다.

다음 코드 예제

는이 작업을 수행하는 방법을 보여줍니다 : 미디어 유형 application/xmlapplication/json 중 하나가 허용되는 경우

@Produces({"application/xml", "application/json"}) 
public String doGetAsXmlOrJson() { 
    ... 
} 

doGetAsXmlOrJson 메소드가 호출 얻을 것이다. 둘 다 똑같이 수용 가능하다면, 전자가 먼저 발생하기 때문에 전자가 선택됩니다.

자세한 내용은 link을 참조하십시오.

+0

답변 해 주셔서 감사합니다. 불행히도 이것은 내가 이미 allready하고있는 일이고 그것은 작동하지 않습니다 ... 둘 다 emthods xml 및 json allready을 생산하고 있습니다. 그러나 XML 응답이 빈 자식 인 동안은 json 응답 만 만듭니다 (콘솔 출력의 스크린 샷 참조) –

+0

Song 클래스에'@XmlRootElement' 주석을 추가하려고합니다. –

+0

이미 완료되었습니다. 추가하지 않으면 죄송합니다. 지금 추가하겠습니다. –

0

내가 답을 얻었는지 모르지만 어떻게 든 빈 xml 자식 대신 ID를 제공하기 시작했습니다. 내가 soemthing하고 그것을했는지를보기 위해 개인 이전의 jsut에서 getId 메소드를 설정했다. (!!!!)

그래서 나는 Song 클래스의 emthod를 public으로 설정하고 설정한다. 이제는 작동한다. .

의미가 있습니까? 만약 그렇다면 pls 정교하게 지금은 왜 지금 작동하는지 혼동 스럽습니다 ...