HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK
的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。
HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:
-
int getResponseCode():获取服务器的响应代码。
-
String getResponseMessage():获取服务器的响应消息。
-
String getResponseMethod():获取发送请求的方法。
-
void setRequestMethod(String method):设置发送请求的方法。
在一般情况下,如果只是需要Web站点的某个简单页面提交请求并获取服务器响应,HttpURLConnection完全可以胜任。但在绝大部分情况下,Web站点的网页可能没这么简单,这些页面并不是通过一个简单的URL就可访问的,可能需要用户登录而且具有相应的权限才可访问该页面。在这种情况下,就需要涉及Session、Cookie的处理了,如果打算使用HttpURLConnection来处理这些细节,当然也是可能实现的,只是处理起来难度就大了。
为了更好地处理向Web站点请求,包括处理Session、Cookie等细节问题,Apache开源组织提供了一个HttpClient项目,看它的名称就知道,它是一个简单的HTTP客户端(并不是浏览器),可以用于发送HTTP请求,接收HTTP响应。但不会缓存服务器的响应,不能执行HTML页面中嵌入的Javascript代码;也不会对页面内容进行任何解析、处理。
简单来说,HttpClient就是一个增强版的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以做;HttpURLConnection没有提供的有些功能,HttpClient也提供了,但它只是关注于如何发送请求、接收
响应,以及管理HTTP连接。
使用HttpClient发送请求、接收响应很简单,只要如下几步即可。
-
创建HttpClient对象。
- 如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
- 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
- 调用HttpClient对象的execute(HttpUriRequest request)发送请求,执行该方法返回一个HttpResponse。
- 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
另外,Android已经成功地集成了HttpClient,这意味着开发人员可以直接在Android应用中使用Httpclient来访问提交请求、接收响应。
比如一个Android应用需要向指定页面发送请求,但该页面并不是一个简单的页面,只有当用户已经登录,而且登录用户的用户名有效时才可访问该页面。如果使用HttpURLConnection来访问这个被保护的页面,那么需要处理的细节就太复杂了。
其实访问Web应用中被保护的页面,使用浏览器则十分简单,用户通过系统提供的登录页面登录系统,浏览器会负责维护与服务器之间的Sesion,如果用户登录的用户名、密码符合要求,就可以访问被保护资源了。
在Android应用程序中,则可使用HttpClient来登录系统,只要应用程序使用同一个HttpClient发送请求,HttpClient会自动维护与服务器之间的Session状态,也就是说程序第一次使用HttpClient登录系统后,接下来使用HttpClient即可访问被保护页而了。
分享到:
相关推荐
在Android开发中,联网请求是应用与服务器交互的基础,用于获取或发送数据。常见的联网请求方式有两种:HttpURLConnection和HttpClient。下面将详细讲解这两种方法,以及它们如何处理POST和GET请求。 **...
在Java编程中,HTTPURLConnection是Java标准库提供的一种用于处理HTTP连接的类,它允许我们发送HTTP请求并接收响应。然而,HTTP协议本身是无状态的,这意味着每次请求都是独立的,不会记住之前的交互,这对于需要...
// 实现网络请求逻辑,使用HttpURLConnection或HttpClient // 当请求完成时,通过callback回调结果 } ``` - 封装POST请求: ```java public static void sendPostRequest(String url, Map, String> params, ...
在Android开发中,网络通信是应用程序不可或缺的一部分,而HttpURLConnection和HttpClient是两种常用的HTTP客户端库。本文将详细介绍如何在Android中使用这两种方法进行网络请求,并提供简单的实例。 首先,我们来...
`HttpURLConnection`相比旧版的`HttpClient`,具有更好的性能和更低的资源消耗,因此被推荐作为首选的网络连接方式。 `HttpURLConnection`是Java的标准库类,它位于`java.net`包下,可以直接在Android项目中使用。...
在Java编程语言中,HTTPURLConnection是Java标准库提供的一个接口,用于通过HTTP协议与服务器进行通信。这个接口在java.net包下,是处理HTTP请求的基础类,包括发送GET、POST等请求,以及文件上传功能。在本文中,...
在Android应用开发中,网络编程是必不可少的一部分,用于与服务器进行数据交互。本文将深入探讨如何使用`HttpURLConnection`和`HttpClient`接口来实现这一功能。 `HttpURLConnection`是Java标准库提供的一种轻量级...
而在Java编程语言中,开发者可以选择多种方式来实现HTTP请求的发送与接收,其中`HttpURLConnection`和`HttpClient`是两种常用的工具。本文将详细介绍如何使用`HttpURLConnection`以及`HttpClient`库来进行HTTP请求的...
Java的HttpURLConnection和HttpClient类为实现HTTP请求提供了便利,同时,读者也会了解如何构建基于Servlet的Web服务器,处理HTTP请求和响应。 对于分布式系统和Web服务,书中的内容可能包括Java RMI(Remote ...
5. **HTTP和HTTPS**: Java通过HttpURLConnection或HttpClient类实现HTTP协议,用于网页访问和数据交换。HTTPS是在HTTP基础上添加了SSL/TLS加密,确保数据的安全传输。 6. **数据库操作**: Java通过JDBC(Java ...
`httpcore-4.2.4.jar`则是`httpclient`的基础库,提供了HTTP协议的核心组件,如连接管理、请求和响应模型等。 为了绕过HTTPS证书校验,我们需要自定义`SSLContext`和`TrustManager`。`SSLContext`是SSL/TLS安全套接...
在Java编程中,`HttpURLConnection`是用于处理HTTP协议的核心类,它提供了向网络资源发起...`HttpURLConnection`虽然简洁,但在高级功能上可能需要结合其他库,如OkHttp或Apache HttpClient,以实现更高效的网络通信。
2. 打开连接:通过`URLConnection`的`openConnection()`方法获取到`HttpURLConnection`对象,并调用`connect()`方法建立与服务器的连接。 3. 设置请求属性:你可以设置如`setDoOutput(true)`(对于POST请求)或`...
五、HttpClient与其他HTTP客户端库的对比 虽然Java内置了HttpURLConnection,但HttpClient因其丰富的功能、优秀的性能和易用性,在许多项目中成为首选。与HttpURLConnection相比,HttpClient提供了更好的错误处理...
本篇文章将深入探讨Java中的网络通信机制,包括标准Java接口、Apache HttpClient、Socket通信以及Android平台上的网络接口等内容。 #### 二、标准Java接口 Java标准库提供了`java.net.*`包,该包包含了用于网络...
HTTP协议是互联网上应用最广泛的协议之一,Java通过HttpURLConnection和HttpClient类提供了HTTP客户端功能。我们可以发送GET和POST请求,处理响应头和响应体,进行文件上传和下载等操作。理解HTTP的工作原理,如状态...
HttpClient与Java内置的`java.net.HttpURLConnection`相比,提供了更强大的功能和更好的性能。然而,对于简单的HTTP请求,`HttpURLConnection`可能是更轻量级的选择。此外,随着Java 11的发布,`java.net....
Java的HttpURLConnection和HttpClient类库允许我们方便地发起HTTP请求并处理响应。这在网页抓取、API调用等场景中非常常见。而HTTPS则是HTTP的安全版本,通过SSL/TLS协议提供了加密通信和服务器身份验证,确保数据...
HTTP(HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议,Java的HttpURLConnection和HttpClient库可以方便地实现HTTP请求。例如,你可以发送GET或POST请求,处理响应头和响应体,以及设置请求参数...
在Java开发中,HttpURLConnection是替代过时的HttpURLConnection API(即HttpClient)的一个选择,它提供了更现代的API和更好的性能优化。 HttpURLConnection类是Java.net包下的一个核心类,它实现了对HTTP协议的...