2017-04-02 1 views
0

Netbeans의 RESTful 웹 서비스을 사용하여 웹 서비스를 개발 중입니다. 서비스 클래스는 방법에 따라 포함Netbeans의 RESTful Java 클라이언트 : javax.ws.rs.NotAcceptableException : HTTP 406 사용할 수 없음

@Path("jpost") 
@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.TEXT_PLAIN) 
public String jpost(Car c){ 
    return "Car:"+c.getTag()+"\t"+c.getName()+"\t"+c.getColor(); 
} 

이 방법을 테스트하기 위해, 내가 시험 방법을 생성하는 넷빈즈 '편안하고 자바 클라이언트을 사용하고 있습니다. 결과는 다음과 같습니다

public String jpost(Object requestEntity) throws ClientErrorException { 
     return webTarget.path("jpost").request(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), String.class); 
    } 

내가 오류 다음 jpost 전화 나타납니다

Exception in thread "main" javax.ws.rs.NotAcceptableException: HTTP 406 Not Acceptable 
    at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:923) 
    at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:770) 
    at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:90) 
    at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:671) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:422) 
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:667) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:423) 
    at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:326) 
    at myserver.test5.jpost(test5.java:36) 
    at myserver.MyServerTest.main(MyServerTest.java:32) 

문제가 무엇입니까?

+0

클라이언트가 올바른 Content-Type을 지정하지 않았습니다. 여기에 올바른 내용 유형은 text/plain –

+0

입니다. 응답에 필요한 변경 사항을 지정할 수 있습니까? Netbenas에서 생성 한 RESTful 클라이언트 코드에 익숙하지 않습니다. – SuB

답변

1

귀하의 서비스는 text/plain 개의 응답만을 생산합니다.

HTTP 코드 406은 서버가 클라이언트가 수용 할 수있는 콘텐츠 형식을 제공 할 수 없음을 의미합니다. 따라서 클라이언트가 Accepts 헤더에 잘못된 콘텐츠 유형을 지정했거나 Accepts을 전혀 보내지 않았습니다.

허용되는 유형을 지정하려면 request(...) 인수가 사용됩니다.

public String jpost(Object requestEntity) throws ClientErrorException 
{ 
    return webTarget.path("jpost") 
      .request(javax.ws.rs.core.MediaType.TEXT_PLAIN) 
      .post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), String.class); 
} 
+0

감사합니다. 출력 형식을 명시 적으로 설정하는 동안 Netbeans이 잘못 생성하는 이유는 무엇입니까? 내가 뭐 잘못하고 있니? – SuB

관련 문제