2013-07-18 1 views
1

glassfish 서버를 설치 한 사람이 연락하지 않습니다. 우리는 json과 xml 형식으로 출력 할 수 있도록했습니다. 현재 json에서 출력하고 있지만 XML이 필요합니다. xml로 어떻게 변경합니까?Glassfish를 JSON에서 XML로 전환하는 방법

+0

이것이 REST 서버 인 경우 HTTP 수락 헤더 값을'application/xml'으로 변경해 보았습니다 –

+0

어디서 할 수 있습니까? 현재 각각의 메소드에는 헤더가 있습니다. @Consumes ({ "application/xml", "application/json"}) 하지만 어디에서 사용할지를 지정해야합니다. – galactikuh

+0

서버를 호출하는 클라이언트에서. –

답변

1

그것을 만날 수있는 다른 사람.

이 경우 서버를 호출하는 클라이언트는 application/xml 값을 보내려면 HTTP 수락 헤더를 지정해야합니다. 많은 RESTful 서버 구현은이 헤더를 사용하여 응답 형식을 지정하는 방법을 결정합니다.

+0

내 문제는 내가 수락 헤더를 지정하지 않았다는 것입니다. 그래서 하나의 버전에서는 JSON으로, 다른 버전에서는 JSON으로 기본 설정되었습니다. – galactikuh

+0

그리고 'Content-type'이 아닌 'Accept'헤더를 사용해야합니다 ... * sigh * – galactikuh

+0

@galactikuh 예 'Content-type'은 요청의 형식을 지정하고 'Accept'는 응답의 예상 형식을 지정합니다. –

0

일부 REST 프레임 워크를 사용하고 있다고 가정합니다. 서버 응용 프로그램 클래스의 일부는 다음과 같이 보일 수 있습니다 :

@GET 
@Path("/somepath") 
@Produces(MediaType.APPLICATION_JSON) 
public SomeClass getSomething(); 

@Produces annotation은 고객에게 전달 될 수있는 미디어 유형을 선언합니다.

이로 변경해야합니다 : 클래스 SomeClass@XmlRootElement로 주석이 경우

@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) 

또는이

@Produces({"application/json", "application/xml"})) 

이 작동합니다. 이 방법은 문자열과 같은 몇 가지 "표준"클래스를 반환하는 경우에 당신은 이런 식으로 작업을 수행 할 수 있습니다

내가 언급 클라이언트 헤더 우려가 솔루션, 난 그냥 가서 여기 솔루션을 입력합니다 었죠 때문에
// This method is called if XML is requested 
    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String getXML() { 
    return "<?xml version=\"1.0\"?>" + "<hello> Hello" + "</hello>"; 
    } 

    // This method is called if JSON is requested 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public String getJSON() { 
    return "{ 'hello': 'Hello' }"; 
    } 
+0

감사합니다. 클라이언트 측에서 문제가 발생한 것으로 나타났습니다. 요청 헤더 유형을 JSON으로 지정하지 않았기 때문에 생각합니다. – galactikuh

관련 문제