I\'m trying to return a JSON response with Spring 3.0.6, but I get a 406 response \"Not Acceptable\", with the description: \"The resource identified by this request is onl
I've stumbled upon the same error (406: content not acceptable) with Spring MVC and @RestController annotation.
The Spring handler:
@RequestMapping(value = "/stuff-acknowledgment/{id}", produces ="application/json;charset=UTF-8", headers="Accept=*")
public Message acknowledgeStuff(@PathVariable("id") String id, @ModelAttribute("ack") AckBean acquittement) {
Observation:
http://www.host.com/stuff-acknowledgment/{id}$id has a very particular format: xxxcomplicatedhashxxx.png (or whatever extension you can think of). Therefore:
Spring MVC interpret the extension and want to produce a result of that same mime type (even if I define it as a path variable), here an "image/png" MIME type even if I tell him to produce JSON. So a 406 exception is thrown.
Fix:
Remove the ".png" extension in the URI, or remove the PathVariable and put it in the body, or add a suffix behind the pathVariable (not tested but should work as well), the point is to avoid a file extension at the end of the URI.
P.S.: I know it doesn't answer the specific problem (with the solution in the update) in the question but I found that SO thread when searching for that problem and post my fix here for the record, hoping it can help someone in the future.