如何扩展HttpurlConnection以支持其他方法



我想在http的顶部构建一个协议(如WebDav)。因此,使用httpurlconnection是有意义的,因为它包含所有基本方法,响应代码等。不幸的是,它防止设置其他方法:

HttpURLConnection con = URL.openConnection( "http://abc.def/someServlet" );
con.setRequestMethod( "MyMethod" );

抛出一种protocolexception无效方法myMethod。

因此,我将其扩展并覆盖" setRequestMethod(string)"以接受" myMethod"。这是行不通的,因为URL仅返回httpurlconnection。有什么方法可以使用httpurlconnection接受其他方法?

请不要,我告诉你这是因为我在Java开始编程时遇到了同样的错误,但没有回报。

问问自己这个问题,您是否会将子类通过接受父班的函数/方法/构造函数?

例如,您会将HttpurlConnection和MyServiceurlConnection的混合物放入集合中。

如果不是这样,您将使用httpurlconnection提供低级操作的全新班级会更好。

您可能希望考虑考虑恢复的接口。您仍然使用HTTP WERB,但您正在升级,看不到它,可以执行任何接口,使用工厂,例如:

public String readFileAsString(String url) {
    String result = null;
    try {
        Client client = Client.create();
        WebResource webResource = client.resource(url);
        ClientResponse response = webResource.type("text/plain").get(ClientResponse.class);
        result= response.getEntity(String.class);
        response.close();
    } catch (Exception e) {
        e.printStackTrace();
        result = "";
    }
    return result;
}

url dosent返回httpurlconnection,它返回urlconnection,因为您没有施放它因此,您不能覆盖httpurlconnection方法setRequestmethod()

最新更新