Jersey: @Consumes funktioniert nicht ganz, wenn der Inhaltstyp nicht festgelegt ist

Ich versuche herauszufinden, wie @Consumes hier funktioniert.

Ich habe eine vereinfachte Ressource, die wie folgt aussieht, und ich möchte nur, dass diese Ressource "application / vnd.myApp + xml" verwendet.

@Path("/app")
@Consumes("application/vnd.myApp+xml")
@Produces("application/vnd.myApp+xml")
public class AppResource {
    @POST
    public Response postStuff() {
        ...
    }
}

Ich habe folgende Testfälle: -

public class AppResourceTest extends JerseyTest {
    @Test
    public void testApp() {
        // #1: Works fine
        ClientResponse response = resource().path("app")
                    .accept("application/vnd.myApp+xml")
                    .post(ClientResponse.class);

        ...

        // #2: Throws a 415 Unsupported Media Type
        ClientResponse response = resource().path("app")
                    .accept("application/vnd.myApp+xml")
                    .type("text/plain")
                    .post(ClientResponse.class);

        ...

        // #3: Works fine
        ClientResponse response = resource().path("app")
                    .accept("application/vnd.myApp+xml")
                    .type("application/vnd.myApp+xml")
                    .post(ClientResponse.class);

        ...
    }
}

Von den drei oben genannten Tests funktionieren die Tests 2 und 3 wie erwartet.

Was # 1 betrifft, warum wirft es keine 415, wenn ich den Inhaltstyp nicht festlege?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage