2016-11-01 3 views
0

Мой веб-сервис Java класс идет как этотПочему я получаю тип носителя неподдерживаемой ошибки 415?

@Path("/signUp") 
public class SignUpService{ 
    (POST) 
    @Path("/sendCode") 
    @Consumes(Media_APPLICATION_JSON) 
    @Produces(Media_APPLICATION_JSON) 
    public String signUp(Incoming streamingData){ 
     //some logic goes here 
     return someString; 
    } 
    return someString; 
} 

// помилования с кодом выше, я напечатал его на основе того, что я мог бы recollect.Real вопрос следующим образом

У меня есть код сервера, работающего на Apache tomcat на моем Mac и когда я отправляю запрос POST с телом JSON с помощью POSTMAN, и он работает.

У меня есть тот же код, который был развернут в tomcat в AWS Ubuntu, но я получаю сообщение типа Media Type unsupported 415. Но запросы GET отлично работают как на моем локальном компьютере, так и на развертывании AWS.

+0

Попробуйте добавить [Dumper Filter] (https://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#Request_Dumper_Filter), чтобы вы могли видеть, какие заголовки находятся в запросе. – Andreas

ответ

0

Я понял решение. Я не добавил

@Consumes(Media_APPLICATION_JSON) 
@Produces(Media_APPLICATION_JSON) 

на уровне класса.

внесения следующих изменений исправили проблему

@Path("/signUp") 
@Consumes(Media_APPLICATION_JSON) 
@Produces(Media_APPLICATION_JSON) 
public class SignUpService{ 
0

Попробуйте добавить следующую зависимость в pom.xml при использовании Maven.

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 
    <version>2.23.2</version> 
</dependency> 

Если вы не используете Maven, скачать баночку отсюда и добавить его к классам: https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson/2.23.2

изменить также (POST) для @POST.

0

Вам не нужно добавлять приведенную ниже аннотацию на уровне класса для решения этой проблемы.

@Consumes(Media_APPLICATION_JSON) @Produces(Media_APPLICATION_JSON)

Вы должны убедиться, тип содержимого, которое вы отправляете в заголовке с запросом должно совпадать с типом содержимого @consume аннотирования Джерси.