Подтвердить что ты не робот

Очень странно: статус HTTP 405 - метод не разрешен

[используя Apache Tomcat/7.0.27]

Кажется, я получаю только эту ошибку

  • (Статус HTTP 405 - метод не разрешен)

когда я пытаюсь сделать запрос REST непосредственно из браузера.

Например, вставив это в адресную строку:

http://localhost:8080/restExample/rest/catalog/video/14951/hello

Когда я запускаю свой тестовый клиент Main.java , все работает нормально.

Любые идеи относительно того, почему это не позволит мне выполнить REST через браузер?

Сторона клиента:

public class Main{
    public static void main(String [] args){
       ClientConfig config = new DefaultClientConfig();
       Client client = Client.create(config);   
       WebResource service = client.resource(getBaseURI(_package));
       runPutRequest(service,"video/128/This is the content with the new description");
    }
}

...
private static void runPutRequest(WebResource service,String path){
        String response = service.path("rest/catalog/"+path).accept(MediaType.APPLICATION_XML).put(String.class);
        System.out.println("Post Response :"+response);
    }

Серверная сторона:

@PUT
@Path("/video/{video-id}/{short-descr}")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_XML)
public Video updateVideo(@PathParam("video-id") int contentid,
                         @PathParam("short-descr") String descr)
{       
    //Video video = searchByContentId(contentid);
    Video video = videoMap.get(contentid);
    video.setDescription(descr);

    videoMap.put(contentid,video);

    if( videoMap.get(contentid) != null){
        return videoMap.get(contentid);
    }else{
         throw new UnsupportedOperationException("NO object found");
    }
}
4b9b3361

Ответ 1

В браузере будет выдаваться запрос GET для вашего ресурса, который вы указали как @PUT на стороне сервера, и пересылаете его с вашего клиентского кода. Браузер пытается "получить" (или GET) ресурс, и ничего не существует для @GET

Ответ 2

Как правило, браузер запрашивает HTTP-метод GET HTTP. Ваш компонент на стороне сервера способен отвечать на запросы PUT, и поэтому вы получаете этот код ошибки.

Ответ 3

Существуют клиенты REST для браузеров, которые могут выполнять запросы PUT, POST и DELETE. Я предпочитаю Простой клиент REST для Chrome.