`
wzucxd
  • 浏览: 26593 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

HttpURLConnection原理

 
阅读更多
a: HttpURLConnection的connect()函数,实际上只是建立了一个与服务器的tcp连接,并没有实际发送http请求。
无论是post还是get,http请求实际上直到HttpURLConnection的getInputStream()这个函数里面才正式发送出去。
b:在用POST方式发送URL请求时,URL请求参数的设定顺序是重中之重,
对connection对象的一切配置(那一堆set函数)
都必须要在connect()函数执行之前完成。而对outputStream的写操作,又必须要在inputStream的读操作之前。
这些顺序实际上是由http请求的格式决定的。
如果inputStream读操作在outputStream的写操作之前,会抛出例外:
java.net.ProtocolException: Cannot write output after reading input.......

c:http请求实际上由两部分组成,
一个是http头,所有关于此次http请求的配置都在http头里面定义,
一个是正文content。
connect()函数会根据HttpURLConnection对象的配置值生成http头部信息,因此在调用connect函数之前,
就必须把所有的配置准备好。
d: 在http头后面紧跟着的是http请求的正文,正文的内容是通过outputStream流写入的,
实际上outputStream不是一个网络流,充其量是个字符串流,往里面写入的东西不会立即发送到网络,
而是存在于内存缓冲区中,待outputStream流关闭时,根据输入的内容生成http正文。
至此,http请求的东西已经全部准备就绪。在getInputStream()函数调用的时候,就会把准备好的http请求
正式发送到服务器了,然后返回一个输入流,用于读取服务器对于此次http请求的返回信息。由于http
请求在getInputStream的时候已经发送出去了(包括http头和正文),因此在getInputStream()函数
之后对connection对象进行设置(对http头的信息进行修改)或者写入outputStream(对正文进行修改)
都是没有意义的了,执行这些操作会导致异常的发生。
分享到:
评论

相关推荐

    Android 简单使用 HttpURLConnection

    通过学习和分析这个示例代码,你可以更好地理解`HttpURLConnection`的工作原理和在Android中的实际应用。 总的来说,`HttpURLConnection`是Android开发中基础的网络请求组件,虽然使用起来可能较为复杂,但它能够...

    HttpURLConnection调用.net WebService

    **二、调用WebService原理** WebService是一种基于Web的、平台无关的交互模型,通常采用SOAP(Simple Object Access Protocol)协议封装数据,通过HTTP协议传输。.NET平台提供了丰富的WebService开发工具,如ASMX或...

    使用HttpURLConnection

    在Java编程中,`HttpURLConnection`是用于处理HTTP请求的核心类,它位于`java.net`包下,是标准的Java API。...`HttpURLConnection`是比`...然而,理解`HttpURLConnection`的工作原理对于解决问题和优化性能仍然非常重要。

    HttpURLConnection用法详解

    在本文中,我们将深入探讨HttpURLConnection的使用方法,帮助开发者全面掌握其工作原理。 ### 1. HttpURLConnection简介 HttpURLConnection是Java.net.URL的子类,它提供了对HTTP协议的支持,可以用来发送GET、POST...

    Android网络连接2——HttpURLConnection

    了解`HttpURLConnection`的工作原理有助于我们优化网络请求。源码中包含了请求建立、数据传输、连接管理等多个层面的细节,深入学习可以帮助我们更好地理解和解决网络问题。 总结,`HttpURLConnection`是Android...

    HttpURLConnection和简单的Android服务器交互

    在Android中,HttpURLConnection是实现服务器交互的基础工具,理解其工作原理和使用方式对开发至关重要。合理利用它,可以构建高效、安全的网络通信机制,实现丰富的功能,如登录注册、数据同步、文件上传下载等。...

    java实现多次HttpURLConnection共享session

    使用Apache HttpClient库可以更方便地处理session共享,因为它提供了更强大的功能和更好的API,但基本原理相同:保存和发送Cookie以保持会话状态。如果你的项目已经包含了HttpClient库,可以考虑使用它来替代...

    HttpURLconnection

    HttpURLConnection是Java标准库中的一个类,用于处理HTTP网络请求,它是Java中实现HTTP协议的...理解其工作原理和正确使用方法,能够帮助我们更好地进行网络编程。同时,封装HTTP请求可以提升代码质量,便于后续维护。

    基于Socket和HttpURLConnection的爬虫实例

    初学者可以通过运行这个项目,理解网络爬虫的基本工作原理,并学习如何使用Java进行网络通信。 除了基本的GET请求,网络爬虫还可能涉及到POST请求、处理重定向、管理cookies、解析HTML等内容。在实际的爬虫项目中,...

    android 联网请求的两种方式HttpURLConnection和HttpClient

    在Android开发中,联网请求是应用与...理解这两种方法的工作原理以及如何处理GET和POST请求,是每个Android开发者必备的技能。在实际开发中,还可以结合使用第三方库,如Retrofit、OkHttp等,以简化网络请求的处理。

    HttpURLConnection之基础

    在Java编程语言中,`HttpURLConnection`是标准库中...在实际开发中,通常会使用更高层次的库,如Apache HttpClient或OkHttp,它们提供了更方便的API,但理解`HttpURLConnection`的工作原理对于学习网络编程非常有帮助。

    Java自带的HttpURLConnection访问接口实现文件上传

    在Java编程语言中,HTTPURLConnection是Java标准库提供...虽然这需要对HTTP协议有一定的理解,但它是理解网络编程和文件上传原理的一个好起点。在实际开发中,我们还需要考虑如安全性、错误处理和性能优化等更多因素。

    xamarin学习笔记A15(安卓OkHttp3和HttpURLConnection)上

    总的来说,Xamarin中的网络请求涉及很多细节,理解OkHttp3和HttpURLConnection的工作原理以及它们各自的优缺点,能帮助开发者更好地实现网络功能,并优化应用性能。在实际开发中,根据项目需求来选择合适的网络库是...

    http.rar httpurlconnection

    无论GET还是POST,都可以通过`InputStream`读取服务器返回的数据,通过`HttpURLConnection.getResponseCode()`检查服务器响应的状态码,以判断请求是否成功。 在实际开发中,HTTP URLConnection相比于其他HTTP...

    HttpUrlConnection:说明HttpUrlConnection

    总结,HttpUrlConnection是Java中进行HTTP通信的基础工具,虽然使用起来相对复杂,但在理解其工作原理和熟练掌握后,可以有效地进行网络编程。对于初学者而言,通过学习HttpUrlConnection,可以更好地理解和掌握HTTP...

    Java 中HttpURLConnection附件上传的实例详解

    本文详细介绍了Java 中HttpURLConnection附件上传的实例详解,包括HttpURLConnection简介、附件上传的基本原理、使用HttpURLConnection实现附件上传的示例代码分析、HttpURLConnection附件上传的优点和缺点等。...

    HttpUrlConnection请求WebService.rar

    在IT行业中,网络通信是应用程序之间交互的重要方式,而HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议。Java提供了多种方法来...但理解HttpURLConnection的工作原理对理解网络请求的本质仍然很有帮助。

    HttpURLConnection OKHttp实现请求

    本文将详细介绍这两种方式的实现原理及如何在实际项目中使用。 首先,`HttpURLConnection`是Java标准库提供的网络通信接口,它是低级别的API,允许应用程序与HTTP服务器进行交互。使用`HttpURLConnection`进行网络...

    多线程上传和下载HttpURLConnection.docx

    首先,理解多线程下载的基本原理。在多线程下载中,大文件被分割成多个小块,每个线程负责下载文件的一个部分。这样,通过并发下载,可以显著提高下载速度。在给定的代码示例中,文件被分为三个部分,每个部分由一个...

Global site tag (gtag.js) - Google Analytics