Le spécifié HTTP méthode n'est pas autorisée pour la ressource demandée dans les services web Rest
je suis en utilisant les services web restful
J'ai un code simple comme ci-dessous:
@Path("/v1/status")
public class ControllerServices
{
@GET
@Produces(MediaType.TEXT_HTML)
String printOnly()
{
System.out.println("running successfully");
return "<p>this webservice</p>";
}
}
Et mon web.xml
fichier qui va comme ceci:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.techbloomer.services</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Quand je demande
http://localhost:8080/webservicesForIndTadka/rest/v1/status
il donne l'erreur que
HTTP Status 405 - Method Not Allowed
type: Status report
message: Method Not Allowed
description: The specified HTTP method is not allowed for the requested resource.
Qu'est-ce que
Quel serveur que vous utilisez? Peut-être que ce link peut vous aider à
Comment voulez-vous faire, il demande de test ? Avec un navigateur ? Première idée: vous ne faites pas une demande GET ...
Dans le cas où vous utilisez FireFox comme Navigateur internet, vous pouvez installer le
je suis à l'aide de vmware vfabric 2.8 serveur
com.techbloomer.services
?Quel serveur que vous utilisez? Peut-être que ce link peut vous aider à
Comment voulez-vous faire, il demande de test ? Avec un navigateur ? Première idée: vous ne faites pas une demande GET ...
Dans le cas où vous utilisez FireFox comme Navigateur internet, vous pouvez installer le
HttpFox
plugin qui va renifler de la requête HTTP et en-têtes de réponse pour vous. --> Juste pour vérification, comment votre demande ressemble. Un nouveau plugin appelé RESTClient
vous permettra de créer des requêtes HTTP.je suis à l'aide de vmware vfabric 2.8 serveur
OriginalL'auteur Mayur Gupta | 2013-10-12
Vous devez vous connecter pour publier un commentaire.
Le chemin annotation sur la classe indique qu'il s'agit de la racine de la classe de ressource et le chemin d'accès à accorder plus de valeur spécifie l'URI de base pour toutes les méthodes de service web contenues dans la classe.
L' @OBTENIR l'annotation est utilisée pour distinguer un sous-ressource méthode qui gère le service web réelle demande et un sous-resource locator méthode qui renvoie un objet qui sera plutôt utilisé pour traiter la demande. Dans ce cas, la méthode a l' @OBTENIR l'annotation qui signifie que cette méthode traite la demande et renvoie le résultat.
Si vous accédez à
http://localhost:8080/webservicesForIndTadka/rest/v1/status/print/
vous devriez voirprintOnly
retour"<p>this webservice</p>".
Utiliser FireFox et installer RESTClient
Bien sûr, il n'est pas nécessaire. C'est seulement un exemple de code avec des explications. Mais je vois dans Mayur Guptas code que son webservice méthode est privée. Peut-être le problème?
Je veux dire qu'il doit être
public String printOnly(){ ... }
Vous avez raison! La méthode doit être public. La méthode de service dans Mayur Gupta exemple est colis privé, qui n'est pas suffisant.
merci pour votre aide, mais encore sa ne fonctionne pas ..... je viens de copier-delà de votre code... il dit: "La ressource demandée n'est pas disponible."
OriginalL'auteur
J'ai vu un problème similaire, lorsqu'une requête GET a un Type de Contenu dans l'en-tête, tomcat (version 7 dans mon cas) retourne le code d'erreur 405.
Vous le savez, une demande HTTP GET ne devrait pas avoir de contenu, donc un Type de Contenu est inutile, donc j'ai supprimé cet en-tête du côté client.
OriginalL'auteur ren78min
Essayer
suivantes
pour spécifier le chemin d'accès à la méthode, JAX-RS peut être à l'aide de quelque chose de différent.
OriginalL'auteur dendini
J'ai juste eu un problème similaire et il est apparu à la disparition d'un " /" à la et de la demande. Dans ce cas, il serait
OriginalL'auteur ralgrad
salut j'ai rencontré le même problème, mais il fixe.
@Path("pathName")
supplémentaire à votre code.@Produces
peut être facultatif parfois.OriginalL'auteur Manoj Krishna