`
- 浏览:
39055 次
- 性别:
- 来自:
上海
-
1: public abstract class HttpURLConnectionextends extends URLConnection
**public class IOUtilsextends ObjectGeneral IO stream manipulation utilities.
This class provides static utility methods for input/output operations.
•closeQuietly - these methods close a stream ignoring nulls and exceptions
•toXxx/read - these methods read data from a stream
•write - these methods write data to a stream
•copy - these methods copy all the data from one stream to another
•contentEquals - these methods compare the content of two streams
The byte-to-char methods and char-to-byte methods involve a conversion step. Two methods are provided in each case, one that uses the platform default encoding and the other which allows you to specify an encoding. You are encouraged to always specify an encoding because relying on the platform default can lead to unexpected results, for example when moving from development to production.
All the methods in this class that read a stream are buffered internally. This means that there is no cause to use a BufferedInputStream or BufferedReader. The default buffer size of 4K has been shown to be efficient in tests.
Wherever possible, the methods in this class do not flush or close the stream. This is to avoid making non-portable assumptions about the streams' origin and further use. Thus the caller is still responsible for closing streams after use.
Origin of code: Excalibur.
**每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。
**类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。有关 URL 的类型和格式的更多信息,可从以下位置找到:
http://www.socs.uts.edu.au/MosaicDocs-old/url-primer.html
通常,URL 可分成几个部分。上面的 URL 示例指示使用的协议为 http (超文本传输协议)并且该信息驻留在一台名为 www.socs.uts.edu.au 的主机上。主机上的信息名称为 /MosaicDocs-old/url-primer.html。主机上此名称的准确含义取决于协议和主机。该信息一般存储在文件中,但可以随时生成。该 URL 的这一部分称为路径 部分。
URL 可选择指定一个“端口”,它是用于建立到远程主机 TCP 连接的端口号。如果未指定该端口号,则使用协议默认的端口。例如,http 协议的默认端口为 80。还可以指定一个备用端口,如下所示:
http://www.socs.uts.edu.au:80/MosaicDocs-old/url-primer.html
URL 的语法由此文档定义:RFC 2396:Uniform Resource Identifiers (URI):Generic Syntax;在此文件中对其内容又进行了修正:RFC 2732:Format for Literal IPv6 Addresses in URLs。字面值 IPv6 地址格式还支持 scope_id。scope_id 的语法和用法在此处进行了描述。
URL 后面可能还跟有一个“片段”,也称为“引用”。该片段由井字符 "#" 指示,后面跟有更多的字符。例如,
http://java.sun.com/index.html#chapter1
从技术角度来讲,URL 并不需要包含此片段。但是,使用此片段的目的在于表明,在获取到指定的资源后,应用程序需要使用文档中附加有 chapter1 标记的部分。标记的含义特定于资源。
应用程序也可以指定一个“相对 URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL。例如,假设 URL 的内容是:
http://java.sun.com/index.html
其中包含的相对 URL:
FAQ.html
为以下形式的缩写:
http://java.sun.com/FAQ.html
相对 URL 不需要指定 URL 的所有组成部分。如果缺少协议、主机名称或端口号,这些值将从完整指定的 URL 中继承。但是,必须指定文件部分。可选的片段部分不继承。
URL 类自身并不根据 RFC2396 中定义的转义机制编码或解码任何 URL 部分。由调用方对任何需要在调用 URL 前进行转义的字段进行编码,并对从 URL 返回的任何经过转义的字段进行解码。进一步而言,由于 URL 不懂 URL 转义,所以它不会识别同一 URL 的对等编码和解码形式。例如,对于这两个 URL:
http://foo.com/hello world/ 和 http://foo.com/hello%20world将被视为互不相等。
注意,URI 类在某些特定情况下对其组成字段执行转义。建议使用 URI 管理 URL 的编码和解码,并使用 toURI() 和 URI.toURL() 实现这两个类之间的转换。
** 抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。通常,创建一个到 URL 的连接需要几个步骤:
openConnection() connect()
对影响到远程资源连接的参数进行操作。 与资源交互;查询头字段和内容。
----------------------------> 时间
1.通过在 URL 上调用 openConnection 方法创建连接对象。
2.处理设置参数和一般请求属性。
3.使用 connect 方法建立到远程对象的实际连接。
4.远程对象变为可用。远程对象的头字段和内容变为可访问。
使用以下方法修改设置参数:
•setAllowUserInteraction
•setDoInput
•setDoOutput
•setIfModifiedSince
•setUseCaches
使用以下方法修改一般请求属性:
•setRequestProperty
使用 setDefaultAllowUserInteraction 和 setDefaultUseCaches 可设置 AllowUserInteraction 和 UseCaches 参数的默认值。
上面每个 set 方法都有一个用于获取参数值或一般请求属性值的对应 get 方法。适用的具体参数和一般请求属性取决于协议。
在建立到远程对象的连接后,以下方法用于访问头字段和内容:
•getContent
•getHeaderField
•getInputStream
•getOutputStream
某些头字段需要经常访问。以下方法:
•getContentEncoding
•getContentLength
•getContentType
•getDate
•getExpiration
•getLastModifed
提供对这些字段的便捷访问。getContent 方法使用 getContentType 方法以确定远程对象类型;子类重写 getContentType 方法很容易。
一般情况下,所有的预连接参数和一般请求属性都可忽略:预连接参数和一般请求属性默认为敏感值。对于此接口的大多数客户端而言,只有两个需要的方法:getInputStream 和 getContent,它们通过便捷方法镜像到 URL 类中。
以下为上面几个类的主要方法:
URL(String spec)
根据 String 表示形式创建 URL 对象。
URLConnection openConnection()
返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
void setDoInput(boolean doinput)
将此 URLConnection 的 doInput 字段的值设置为指定的值。
void setDoOutput(boolean dooutput)
将此 URLConnection 的 doOutput 字段的值设置为指定的值。
void setUseCaches(boolean usecaches)
将此 URLConnection 的 useCaches 字段的值设置为指定的值。
void setRequestMethod(String method)
设置 URL 请求的方法, GET POST HEAD OPTIONS PUT DELETE TRACE 以上方法之一是合法的,具体取决于协议的限制。
InputStream getInputStream()
返回从此打开的连接读取的输入流。
static String toString(InputStream input)
Get the contents of an InputStream as a String using the default character encoding of the platform.
例子如下:
HttpURLConnection connection = null;
URL url = new URL(actUrl);
connection = (HttpURLConnection)url.openConnection();
connection .setDoOutput(true);
connection .setDoInput(true);
connection .setUseCaches(false);
connection .setRequestMethod("GET");
InputStream is = dashboardConnection.getInputStream();
result = IOUtils.toString(is);
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本篇文章将深入探讨HttpURLConnection的使用方法、特性以及一些关键的示例代码。 一、HttpURLConnection简介 HttpURLConnection继承自URLConnection,它提供了对HTTP协议的直接支持。相比于HttpClient,...
总结来说,Android中的HttpUrlConnection是处理网络请求的重要工具,它可以方便地进行JSON数据的POST和GET操作。通过理解HTTP请求方法、设置请求头、处理响应以及解析JSON,开发者可以有效地与服务器交换数据。在...
总结,通过`HttpURLConnection`实现文件上传需要理解HTTP请求的构建,以及服务器端如何解析和处理这些请求。Apache Commons库简化了这一过程,但同时也需要注意安全性和性能优化。在实际项目中,可能还需要处理错误...
总结,`HttpURLConnection`是Java中处理HTTP请求的首选工具,其灵活性和易用性使得在各种网络编程场景中都得到了广泛应用。通过理解并熟练运用上述知识,开发者能够轻松地进行HTTP通信,同时解决可能出现的编码问题...
### 使用HttpURLConnection发送短信 在Java开发中,通过网络接口实现短信发送是一种常见的应用场景,例如在用户注册、找回密码等场景下验证用户身份时。本文将详细介绍如何利用`HttpURLConnection`来实现短信发送...
在Android开发中,网络编程是不可或...使用HttpURLConnection可以方便地实现这些操作,提高应用的用户体验。在实际开发中,我们还需要考虑多线程下载、并发控制、下载队列管理等高级特性,以进一步优化性能和资源利用。
总结来说,`AsyncTask`结合`HttpURLConnection`能有效处理网络请求,避免阻塞主线程,同时保持用户界面的交互性。这个例子为开发者提供了一个基础的网络请求模板,可以根据实际需求进行扩展和定制。在实际开发中,你...
总结来说,`HttpURLConnection`是Java中进行HTTP通信的基础工具,它提供了连接、请求和响应管理的一系列方法,适用于各种远程服务器操作,包括文件上传。通过熟练掌握和运用`HttpURLConnection`,开发者可以构建高效...
在Android开发中,有时我们需要与...总结,通过`HttpURLConnection`调用.NET WebService是一个涉及到HTTP通信、XML处理和.NET服务理解的过程。了解这些概念和技术,可以帮助我们在Android开发中实现跨平台的数据交换。
总结来说,Java实现多次HttpURLConnection共享session的关键在于正确处理Cookie,保存服务器返回的Session ID,并在后续请求中携带这个ID。通过这种方式,即使没有浏览器环境,也能模拟登录状态,爬取登录后的内容。...
总结来说,`HttpURLConnection`是Android Studio中进行网络通信的基本手段,通过它可以实现对网络资源的GET和POST请求,无论是获取文本还是图片。虽然它的使用相对复杂,但其灵活性和轻量级特性使其在特定场景下仍...
本主题将深入探讨如何使用HttpURLConnection进行Android与服务器的简单交互,以及相关的知识点。 **HttpURLConnection简介** HttpURLConnection是Java标准库中的一个类,它是基于HTTP协议实现的,可以用来发送HTTP...
总结,`HttpURLConnection`是Android进行网络通信的重要工具,通过它可以灵活地实现各种HTTP请求。理解其工作原理并熟练运用,将有助于我们编写出高效、可靠的网络代码。同时,结合源码阅读和工具类的封装,能进一步...
总结,HTTPURLConnection是Android原生的网络请求方式,适合简单的HTTP操作。对于复杂的HTTP交互和JSON解析,建议使用更强大的第三方库,如OkHttp+Gson或Retrofit+Gson,它们可以显著提高开发效率和代码质量。同时,...
本文将深入探讨如何使用`HttpUrlConnection`来下载文件,以及代码中的关键知识点。 #### 一、HttpUrlConnection简介 `HttpUrlConnection`实际上是一个抽象类,定义了处理HTTP和HTTPS连接的方法和属性。当通过`java...
总结一下,Android中使用Java原生HttpURLConnection进行GET请求涉及以下关键点: - 创建URL对象并获取HttpURLConnection实例。 - 设置请求方法和相关属性,如超时和User-Agent。 - 检查响应状态码,处理成功或错误...
总结起来,Android开发者在使用`HttpURLConnection`进行HTTP GET请求时,应了解请求的建立、连接属性设置、请求执行、响应处理以及连接关闭等步骤。同时,理解Android安全策略对于正确实现网络通信至关重要。
总结,Java的HttpURLConnection接口提供了基本的HTTP通信能力,包括文件上传。通过设置请求头、写入请求体并处理响应,我们可以实现文件的上传操作。虽然这需要对HTTP协议有一定的理解,但它是理解网络编程和文件...
总结,HttpUrlConnection是Java中进行HTTP通信的基础工具,虽然使用起来相对复杂,但在理解其工作原理和熟练掌握后,可以有效地进行网络编程。对于初学者而言,通过学习HttpUrlConnection,可以更好地理解和掌握HTTP...
总结来说,HTTP URLConnection是Java中处理HTTP请求的基础工具,理解其工作原理和使用方式对于进行Web开发至关重要。而HTTP GET和POST则是HTTP协议中的核心概念,了解它们的区别和应用场景,可以帮助我们更好地设计...