2012-05-18 5 views
12

가 [아파치 톰캣/7.0.27이 사용]매우 독특한 : HTTP 상태 405 - 방법이 허용되지 않음 - 방법은

그것은 내가에만이 오류가 보인다

  • (는 HTTP는 상태 (405) 허용되지 않음)

브라우저에서 직접 REST 요청을하려고 할 때. 주소 표시 줄에이 붙여 넣기하여

예컨대 : 나는 내 테스트 클라이언트 Main.java를 실행하면

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

모든 것이 잘 작동합니다.

브라우저를 통해 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"); 
    } 
} 
+1

대 놓으십시오 .... – esej

답변

18

브라우저는 서버 쪽에서 @PUT으로 선언하고 클라이언트 측 코드에서 PUT하는 자원에 대해 GET 요청을 실행합니다. 브라우저가 리소스를 가져 오거나 (GET) 시도하고 있습니다. @GET에 대한 것이 없습니다.

+0

브라우저에서 @PUT을 테스트하는 방법이 있습니까? – Fabii

+0

'method : 'PUT'과 함께'$ .ajax'를 사용하여 간단한 jQuery 호출을 작성하고 필요한 매개 변수/데이터를 전달하십시오. – PhD

+1

Fiddler를 사용하여 이러한 요청을 사용자 정의 할 수도 있습니다 :) – PhD

6

일반적으로, 브라우저는 요청을하는 GET HTTP 방법을 사용합니다. 서버 측 구성 요소는 PUT 요청에만 응답 할 수 있으므로 그 오류 코드가 표시됩니다.

+0

고맙습니다. 매우 도움이되었습니다. – Fabii

2

PUT, POST 및 DELETE 요청을 수행 할 수있는 브라우저 용 REST 클라이언트가 있습니다. Chrome 용으로는 Simple REST Client을 선호합니다.

관련 문제