如何为Apache Commons httpclient注册URL处理程序

时间:2020-03-06 14:52:15  来源:igfitidea点击:

我希望能够使用apache httpclient访问自定义URL。像这样的东西:

HttpClient client = new HttpClient();
HttpMethod method = new GetMethod("media:///squishy.jpg");
int statusCode = client.executeMethod(method);

我可以以某种方式注册自定义URL处理程序吗?或者我应该只使用Java注册一个,使用

URL.setURLStreamHandlerFactory(...)

问候。

解决方案

我认为在Commons httpclient中没有办法做到这一点。它也不是很有意义,毕竟它是一个HTTP客户端,而" media:///squishy.jpg"不是HTTP,因此实现HTTP协议的所有代码可能仍然无法使用。

URL.setURLStreamHandlerFactory(...)

可能是要走的路,但是我们可能必须手动执行很多协议编码,具体取决于"媒体"协议。

我们这样做:

org.apache.commons.httpclient.protocol.Protocol.registerProtocol("ss-https", 
     new Protocol("ss-https",
     (ProtocolSocketFactory)new EasySSLProtocolSocketFactory(), 443));