2014-11-15 5 views
0

서버 응답에서 메시지를 보내려고 할 때 : 지원되지 않는 미디어 유형입니다. (415)REST 게시 요청

{ 
    "street": "Alex", 
    "picture": "fsdfs" 
} 

저지 2.7을 사용합니다. 그것은 GET을 호출 할 때 okey이지만 문제는 POST 메서드에 있습니다. 프로젝트에 나는 org.glassfish.jersey.media:jersey-media-json-jackson 포함 김정일 \는 this topic

public static void main(String[] args) throws Exception, RuntimeException { 
     final Application application = new ResourceConfig() 
       .packages("org.template") 
       .register(JacksonFeature.class); 

     server = new Server(PORT_NUMBER); 
     ServletContextHandler servletContextHandler = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS); 
     servletContextHandler.addFilter(GuiceFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); 
     servletContextHandler.addServlet(DefaultServlet.class, "/*"); 

     server.start(); 
     server.join(); 

    } 

간단한 API에서 같은 코드를 ncluded :

 @Path("/test") 
     @Produces(MediaType.APPLICATION_JSON) 
     @Consumes(MediaType.APPLICATION_JSON) 
     public class ExampleAPI { 

      @GET 
      @Path("hello") 
      @Produces(MediaType.TEXT_PLAIN) 
      public String hello() { 
       return "Hello World"; 
      } 

      @POST 
      @Path("/create") 
    public Response create(BeanInfo bean) { 

     return Response.created(UriBuilder.fromResource(BeanInfo.class) 
       .path("{picture}").build(bean.getPicture())) 
       .entity(bean.toString()) 
       .build(); 
    } 
} 

여기에 어떤 문제가 ? 객체를 json에 매핑해야합니까?

의 BeanInfo : 당신이 당신의 서비스를 호출 할 때 잘못 Content-Type 헤더를 설정하고 있기 때문에

@JsonProperty("picture") 
    private final String picture; 

    @JsonProperty("street") 
    private final String street; 
    ... 

답변

2

그것은 아마. "application/json"으로 설정해야합니다. 내 생각에 서버 측이 올바르게 정의되어 있고 클라이언트 측에서 문제가 발생하고 API를 호출하는 방법이 문제가됩니다.

415 지원되지 않는 미디어 유형

415 (지원되지 않는 미디어 유형) 상태 코드는 원 서버 페이로드 가에이 방법이 지원하지 않는 포맷으로 구성되어 있기 때문에 요구 처리를 거부 있음을 나타냅니다

대상 자원. 형식 문제는 요청의 표시된 콘텐츠 형식 또는 콘텐츠 인코딩 또는 데이터를 직접 검사 한 결과 일 수 있습니다.

+0

내 클라이언트는 내가 좋아 좋아요 – qwerty12345

+0

이라고 생각하지만 올바르게 구성해야 '우편 배달부 나머지 클라이언트'입니다. Postman을 사용하여 API도 테스트하므로 이미지를 올바르게 구성하는 방법 ("Header"부분에주의) -> [Image at TinyPic] (http://tinypic.com/r/2dsqtg1/8) – Marlon

+0

문제는 빈 클래스에서 발생했습니다. – qwerty12345

1

문제는 bean 클래스에서 발생했습니다. 나는 빌더 패턴을 사용했고 잭슨은 그것을 해독 할 수 없었습니다. 클래스 및 빌더에 어노테이션을 추가 했으므로 이제는 잘 작동합니다.

@JsonDeserialize(builder = BeanInfo.Builder.class) 
public class BeanInfo{ ... 

및 빌더

:

@JsonPOJOBuilder(buildMethodName = "build", withPrefix = "set") 
public static class Builder {...