我正在寫使用Apache HTTPComponents 4.3(JAVA)的的HttpCore庫的HTTP服務器。我的服務器必須能夠接收具有非標準HTTP方法(GET,POST,DELETE等以外的方法)的請求。非標準的HTTP方法和Apache HTTP組件
但是,當我的服務器接收到這樣的請求,將返回響應「不支持方法」。有沒有辦法強制HTTPComponents接受非標準的HTTP方法?
背景:我正在執行一個WebDAV服務器,它採用非標準方法(如MKCOL和PROPFIND)。
謝謝
我正在寫使用Apache HTTPComponents 4.3(JAVA)的的HttpCore庫的HTTP服務器。我的服務器必須能夠接收具有非標準HTTP方法(GET,POST,DELETE等以外的方法)的請求。非標準的HTTP方法和Apache HTTP組件
但是,當我的服務器接收到這樣的請求,將返回響應「不支持方法」。有沒有辦法強制HTTPComponents接受非標準的HTTP方法?
背景:我正在執行一個WebDAV服務器,它採用非標準方法(如MKCOL和PROPFIND)。
謝謝
我找到了解決方案,所以我會回答我自己的問題。的xD
你必須創建自己的HttpRequestFactory
實現,並通過它的鏈條。
HttpRequestFactory reqFact = new HttpRequestFactory() {
public HttpRequest newHttpRequest(final RequestLine requestline) throws MethodNotSupportedException {
return new BasicHttpEntityEnclosingRequest(requestline);
}
public HttpRequest newHttpRequest(final String method, final String uri) throws MethodNotSupportedException {
return new BasicHttpEntityEnclosingRequest(method, uri);
}
};
HttpMessageParserFactory<HttpRequest> parserFact = new DefaultHttpRequestParserFactory(null, reqFact);
HttpConnectionFactory<DefaultBHttpServerConnection> connFact = new DefaultBHttpServerConnectionFactory(null, parserFact, null)
該HttpComponents默認使用的實現拋出一個MethodNotSupportedException
如果一個非標準的HTTP方法被發現。默認實現的源代碼可以在這裏找到:
哪個版本HTTPComponents庫您使用? v4 +在處理像WebDAV這樣的自定義實現方面要好得多。 – brandonscript
看起來像阿帕奇有你覆蓋,發現兔崽子項目http://jackrabbit.apache.org/我還沒有使用它,但它看起來像一個良好的開端找 –
@ r3mus哎呀對不起,忘了,包括版本。我正在使用HttpCore的4.3版本。而且我不在尋找WebDAV實現。我正在編寫自己的個人項目。 – Michael