wake-up-neo.com

Jersey gibt den HTTP-Status 405 zurück - Methode nicht zulässig

Ich habe einen sehr einfachen Endpunkt mit Jersey. Meine URL ist statisch und erfordert keine Anforderungsparameter. Es sieht aus wie das: 

@GET
@Path("/mydata")
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)  
public String getData()  {
  return "{'name': 'value'}";
}

Immer wenn ich diese URL anfordere, erhalte ich immer einen HTTP-Statuscode 405 - Methode nicht zulässig.

Das Seltsame ist, dass ich, wenn ich die @Path-Annotation ändere und eine Pfadvariable definiere, z. @Path("/chart/{blah}") es funktioniert gut.

Hat jemand eine Idee, warum ich eine Pfadvariable definieren muss, damit dies funktioniert? Ich brauche keine Pfadvariable und es scheint dumm zu sein, nur eine 200 hinzuzufügen.

17
seedhead

Danke für die Vorschläge. Es endete damit, dass ich dumm ein falsches URL-Muster für mein Jersey SpringServlet eingab. Es war / anstelle von /* 

<servlet>
   <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.Sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
</servlet>

<url-pattern>/*</url-pattern>

<servlet-mapping>
   <servlet-name>Chart Service</servlet-name>
   <url-pattern>/*</url-pattern>
</servlet-mapping>
10
seedhead

Kommentieren Sie die Klasse anstelle der Methode:

@Path("/mydata")
public class MyClass(){

@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)  
public String getData()  {
  return "{'name': 'value'}";
}

}

Ich weiß nicht warum, aber es gibt mir auch Probleme andersherum

4
Eugenio Cuevas

Ich denke es liegt wahrscheinlich daran, dass du angegeben hast 

@Produces(MediaType.APPLICATION_JSON).

1) Vielleicht sollten Sie versuchen, Folgendes in einem Terminal auszuführen

curl -i -X GET -H 'Accept:application/json' http://localhost:8080/mydata

2) Oder wechseln Sie zu

@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_HTML})
3
tanyehzheng

eine weitere mögliche Quelle für ein solches Problem: Seien Sie mit allen Parametern und Anmerkungen sehr aufmerksam. Ich hatte ein solches Problem, als ich eine Methode mit POST aufrief, während sie mit @PUT kommentiert wurde.

0
62mkv