web-dev-qa-db-fra.com

Statut HTTP 405 - Erreur de méthode non autorisée pour l'API Rest

Je pose cette question après avoir fait des recherches. J'ai suivi les solutions données pour ce type d'erreur, mais cela n'a pas fonctionné pour moi. Toutes les suggestions comme où je me trompe dans le code ci-dessous. Je crée une API REST mais lorsque je demande l'URL, elle me donne l'erreur 405.Below est l'URI que je demande.

    http://localhost:8080/Project/services/start/version

Ci-dessous l'extrait de code.

@Path("/start")

public class StartService {
@GET
@Path("/version")
@Produces({"text/plain","application/xml","application/json"})
public String getVersion() {
    String ver="";

    try{


          Runtime rt = Runtime.getRuntime();
          Process pr = rt.exec("C:\\server\\dgr -v" );

          BufferedReader stdInput = new BufferedReader(new InputStreamReader
(pr.getInputStream()));
          BufferedReader input = new BufferedReader(stdInput);
         // String ver ="";
          StringBuffer verOutput = new StringBuffer();
                while((ver =  input.readLine()) != null){
                    verOutput.append(ver + "\n");
                    System.out.println(ver);
                }


        }catch (Throwable t)  
          {  
            t.printStackTrace();  
          }  


        finally {  

        }
    return ver;  }

}

web.xml:

<web-app 
xmlns="http://Java.Sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

<servlet>
<display-name>eLicensingWeb</display-name>      
    <servlet-name>JAX-RS REST</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.cem.plc.service</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>




<servlet-mapping>
    <servlet-name>JAX-RS REST</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>


<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>


</web-app>
20
user2821894

@Produces({"text/plain","application/xml","application/json"}) changer ceci en @Produces("text/plain") et essayer, 

5
user2721787

J'ai également eu ce problème et j'ai pu le résoudre en activant le support CORS sur le serveur. Dans mon cas, c’était un serveur Azure et c’était facile: Activer CORS sur Azure

Vérifiez donc comment votre serveur fonctionne et activez CORS. Je n'avais même pas besoin d'un plugin de navigateur ou d'un proxy :)

0
Nadine

Ajouter

@Produces({"image/jpeg,image/png"})

à

@POST
@Path("/pdf")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({"image/jpeg,image/png"})
//@Produces("text/plain")
public Response uploadPdfFile(@FormDataParam("file") InputStream fileInputStream,@FormDataParam("file") FormDataContentDisposition fileMetaData) throws Exception {
    ...
}
0
Gene