如何正确覆盖Java中的HttpURLConnection connect()方法

时间:2016-10-11 23:45:01

标签: java android httpurlconnection

我有一个扩展java.net.HttpURLConnection的课程。我正在为Android开发并处理digest auth(通过URLConnection本身不支持)。

最初我想覆盖connect()方法,以便我可以调用super.connect()查看响应代码,然后如果我们得到401则执行“引擎盖下的摘要验证”。连接方法在原始java.net类中声明为抽象,因此必须实现它。我想找到这个方法的源代码(因为你可以在处理标准实例时调用它),但找不到任何东西来向我展示下面发生了什么。

我的下一个选择是覆盖getResponseCode,但我必须再次提供connect()的正文。

所以有人知道HttpURLConnection.connect()实际上做了什么吗?我能正确地解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

有关编写自己代码的灵感来源,请查看openjdk代码。例如,grepcode.com和here's some (old) underwear to handle https connections
随意浏览其他软件包同样,您可能会发现newer stuff

答案 1 :(得分:0)

在我的示例中查看使用HttpUrlConnection进行连接并返回JSON字符串。 见:https://gist.github.com/marlusantos/1004ee13e528b2e99dd528ceb2294d1b 这个案例我在AsyncTask中使用过。

答案 2 :(得分:0)

因此根据我的研究,实际上sun.net.www.protocol.http.HttpURLConnection在使用HTTP协议调用URL.openConnection()时作为具体对象/类型返回。这是我应该从中获得的具体类,以使生活更轻松,而不必实现抽象类java.net.HttpURLConnection

这样我可以覆盖connect()方法来支持摘要身份验证等。