JAX-RS | Fehler 406 "Not Acceptable" wird nicht ausgelöst


#1

Hallo,

ich habe einen Test-WebService geschrieben, welcher nur die Version und andere Test-Daten zurück geben soll.
Unter @Produces habe ich jeder Methode eigene spezifische MediaTypes zugeordnet.

public class RestEndpoint {

	@Context HttpServletRequest request;

	@GET
	@Path("/getVersion")
	@Produces({ MediaType.APPLICATION_JSON + ";charset=utf-8" })
	public Response getVersion() throws Exception{
		return Response.ok("{version:\""+Initialisation.VERSION+"\"}").build();
	}
	
	@GET
	@Path("/getTest001")
	@Produces({ MediaType.APPLICATION_XML + ";charset=utf-8", MediaType.APPLICATION_JSON + ";charset=utf-8", "text/csv;charset=utf-8" })
	public Response getTest001() throws Exception{
		return Response.ok(new TestClass()).build();
	}

...

Ich habe für die XML- und CSV-MediaTypes entsprechende MessageBodyWriter erstellt. Das Funktioniert auch soweit.
In der web.xml habe ich folgende MediaTypeMappings durchgeführt.
[XML]
resteasy.media.type.mappings
xml : application/xml;charset=UTF-8, json : application/json;charset=UTF-8, csv : text/csv

[/XML]

Wenn ich jetzt eine Methode über den Browser aufrufe und ich keinen gültigen MediaType angebe, sucht sich der Server einen MediaType aus der @Produces-Liste heraus.
Ich möchte aber, das der Fehler 406 “Not Acceptable” erzeugt wird.

Beispie:
URL: http://localhost:8080/testws/api/getVersion.xml
IST-Antwort: {version:“1.0.0”}
SOLL-Antwort: HTTP-Fehler 406 “Not Acceptable”

Kann mir bitte jemand helfen und mir sagen, was ich anpassen muss?

Danke & Grüße
Hans


#2

Was steht denn im accept-header des requests?


#3

Anfrage-Header:

Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: .............................................................................................
Connection: keep-alive

Antwort-Header:

X-Powered-By: Undertow/1
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Server: WildFly/8
Date: Wed, 11 Jan 2017 13:05:08 GMT
Connection: keep-alive
Access-control-allow-origin: *
Access-control-allow-credentials: true
Content-Type: application/json;charset=utf-8
Content-Length: 17
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, HEAD
Access-Control-Max-Age: 1209600