HttpURLConnection connect() , getInputStream() , getContent(



我使用类 HttpURLConnection ,但我对一些方法感到困惑

假设 HttpURLConnection 对象名称为"c">

  1. 删除 c.connect(( 将导致连接成功,它将毫无问题地检索连接结果

  2. c.getInputStream(( 和 (InputStream( c.grtContent(( 的输出是相同的,那么它们之间有什么区别

  3. 使用HttpGet将达到与HttpURLConnection相同的方法,那么这两种方法有什么区别

  4. HttpURLConnection on URLConnection 有什么额外的好处

    c = (HttpURLConnection( (URL(.openConnection((; c.connect((;添加或删除会产生相同的结果,那么这种方法有什么用 InputStream stream= c.getInputStream((; InputStream stream2 = (InputStream( c.getContent((; stream 和 stream2 是相同的,那么 getInputStream(( 和 getContent(( 有什么区别呢?

    //===

    =================================HttpGet c= new HttpGet(url(; HttpResponse response = c.execute(httpGet( InputStream stream3 = response.getEntity((.getContent((; 此外,Stream3 与 Stream 和 Stream2 相同;那么 HttpGet 和 HttpURLConnection 之间有何不同

来自 Android 文档:

[HttpURLConnection是] 支持HTTP特定功能的URLConnection

例如,从HttpURLConnection中,您可以检索特定于 HTTP 的 HTTP 方法或 HTTP 状态代码。

相反,URLConnection类是:

抽象类 URLConnection 是表示应用程序和 URL 之间的通信链接的所有类的超类

正常用法是:

  1. 创建URL对象
  2. 通过致电url.openConnection()获取URLConnection。返回的对象可以强制转换为HttpURLConnection
  3. 通过调用connection.getInputStream()方法获取InputStream
  4. 关闭连接 (disconnect()方法( (请参阅@EJP注释(

关于connect()方法,来自 Oracle 文档:

并不总是需要显式调用连接方法来启动连接。依赖于连接的操作,如getInputStreamgetOutputStream等,将在必要时隐式执行连接。

HttpGetHttpURLConnection之间的区别在于它们属于 2 个不同的库,但在功能上它们或多或少是相同的(现在HttpGet已被弃用并删除,因此您不会在标准 Android API 中找到它(

最新更新