2011-12-16 3 views
0

저지를 사용하고 있으며 서버에 객체 목록을 보내고 싶습니다. 이것은 시나리오입니다.저지를 사용하여 클라이언트에서 서버로 연결된 객체 목록을 전달할 수 있습니까?

@XmlRootElement 
class Myclass{ 
    //some primitive attributes + empty constructor + getter/setters 
} 

MyClass는 서버와 클라이언트 모두에 있습니다. ContainerRequest getEntity : JAXBElement 첨부 및 JAXBElement 첨부 및 MIME에 대한 메시지 본문 리더 // 서버 측 @Path ("/ tosend") 불행하게도

class receiver{ 

    public Response posted(JAXBElement<MyClasses> vals){ 
      //work with vals.getValue() as the list of all Objects 
    } 
} 

@XmlRootElement 
class MyClasses{ 
    private List<MyClass> classes = new ArrayList<MyClass>(); 
    // put some MyClass into the list 
} 

class Sender{ 
    MyClasses list = new MyClasses(); 
    // after client initialization i want to send this list in a POST to server 
    WebResource service = client.resource(baseURI()); 

    //I tried 
    service.type("application/xml").accept("application/xml").post(ClientResponse.class,list); 
} 

,이 오류가 응용 프로그램/octet-stream 유형을 찾을 수 없습니다.

어떻게 해결할 수 있습니까?

답변

2

코드가 위와 똑같은가요? 이 예외는 요청 내용 유형을 설정하지 않았 음을 나타냅니다. JAXBElement를 사용하지 말고 요청의 내용 유형이 application/xml로 설정되어 있는지 확인하십시오. 코드 스 니펫에서 그렇게하는 것처럼 보입니다. 그러나 미디어 유형은 application/octet-stream입니다. 따라서 코드 스 니펫이 실제 코드와 일치하지 않거나 예외가 코드의 다른 섹션에서 발생하거나 메시지 헤더가 posted() 메서드에 도달하기 전에 메시지 헤더를 변경하는 필터가 있습니다. 메소드에 @Consumes(MediaType.APPLICATION_XML)으로 주석을 붙입니다.

Btw를 사용하면 MyClasses 래퍼 클래스를 사용할 필요가 없습니다. 간단히 List를 보내면 잘 작동합니다.

0

val의 유형으로 MyClasses를 사용하여 소비 된 유형을 설정합니다.

@POST 
@Consumes({ MediaType.APPLICATION_XML }) 
public Response posted(MyClasses vals) { 
    // 
    return Response.ok.build(); 
} 
+0

나는 그 변화를 만들었지 만 같은 오류 메시지가 나타납니다. MyClasses 용 – Lahniep

관련 문제