2013-03-04 2 views
1

HttpURLConnection을 사용하여 HTTP 요청 방법 MOVE를 설정하는 방법은 무엇입니까?HttpURLConnection을 사용하여 HTTP 요청 MOVE를 설정하는 방법은 무엇입니까?

HttpURLConnection 또는 해당 클래스를 사용하는 라이브러리를 사용하면 코드에서 예외 Caused by: java.net.ProtocolException: Invalid HTTP method: MOVE가 발생합니다. 따라서 MOVE 메서드는 Java 플랫폼에서 지원되지 않습니다.

이 문제점/제한 사항에 대한 패치 또는 해결 방법이 있습니까? 해결 방법은 HTTP 요청을 작성하는 또 다른 Java 라이브러리 일 수 있습니다.

편집 :MOVE 동사는 WebDav HTTP extension입니다. 나중에 프로토콜에 추가 된 PATCH extension도 있습니다.

여기서 참조하려는 SkyDrive API는 구현하려고 시도한 move 기능이 있습니다.

Ruby platform supports the MOVE method입니다. 나는 왜 자바가 그 확장을 지원하지 않거나 심지어 허용하지 않는지 궁금하다..

+1

,을 참조하십시오이 가능하여 이동하거나 PATCH 같은 비표준 HTTP 방법을 사용하여, 사용자 정의 네트워킹 구현이 [http 메서드] (http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods) –

+0

요청에 GET 또는 POST를 사용하고 싶습니다. –

+0

GET, POST, PUT, DELETE, HEAD 만 지원됩니다 (Java 및 HTTP 모두). 이 MOVE 프로토콜은 무엇을하기로되어 있습니까? – aymeric

답변

3

HttpURLConnection의 버그입니다. 다른 라이브러리로 전환하고 싶지 않다면, 인트로 스펙 션을 사용하여 메소드를 덮어 쓸 수 있습니다 (예, Jersey가 수행하는 것입니다, http://java.net/jira/browse/JERSEY-639 참조)

+0

감사! 저지는 갈 길입니다. –

2

서버가 지원하는 경우 POST 요청을 시도 할 수 있습니다 X-HTTP-Method-Override: MOVE 헤더로

1

Apache Http-Components Client를 사용하는 것이 더 좋습니다.

CloseableHttpClient httpclient = HttpClients.createDefault(); 
HttpUriRequest moveRequest = RequestBuilder 
      .create("MOVE") 
      .setUri("http://example.com") 
      .build();   
CloseableHttpResponse response = httpclient.execute(moveRequest); 

메이븐 좌표 : : 더`HTTP` 요청`MOVE`이 없습니다

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.2+</version> 
</dependency> 
관련 문제