本示例说明了如何使用Apache HttpClient发送GET和POST请求,以及如何发送表单数据,详见代码及说明。对于ASP.NET的网站请求,可以查看使用Apache HttpClient访问ASP.NET发送GET和POST请求
说明:
1、发送表单POST请求时,需要借助HttpWatch或有这种功能的小工具来查看发给服务器的参数有哪些;
2、对于POST请求的表单数据,需要创建BasicNameValuePair对象的集合,然后构造成UrlEncodedFormEntity对象,再赋值到HttpPost对象的Entity中;
3、请求发送后可以使用response2.getStatusLine().getStatusCode(),获取HTTP的状态码;
4、使用HttpResponse对象的getHeaders("")或getAllHeaders方法可以获取相应头;
5、若要获取相应的内容,可以使用HttpResponse的getEntity()获取HttpEntity对象,然后再调用它的getContent()方法,获取一个输出流(InputStream对象)
Apache HttpClient 版本 4.0.3
下载地址:http://hc.apache.org/downloads.cgi
package com.zywang.http;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
/**
* 使用HttClient访问JSP示例
* @author ZYWANG
*/
public class HttpClientForJSP {
public static void main(String[] args)
throws ClientProtocolException, IOException {
HttpClient client = new DefaultHttpClient();
get(client,"http://localhost:8080/PMS");
loginPost(client);
client.getConnectionManager().shutdown();
}
/**
* 模拟POST请求
* @param client
* @throws UnsupportedEncodingException
* @throws IOException
* @throws ClientProtocolException
*/
private static void loginPost(HttpClient client)
throws UnsupportedEncodingException, IOException,
ClientProtocolException {
System.out.println("==========登录:====================================");
HttpPost post = new HttpPost("http://localhost:8080/PMS/LoginCheck.do");
//创建表单参数列表
List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("method", "check"));
qparams.add(new BasicNameValuePair("userid", "zywang"));
qparams.add(new BasicNameValuePair("userpassword", "111111"));
//填充表单
post.setEntity(new UrlEncodedFormEntity(qparams,"UTF-8"));
HttpResponse response2 = client.execute(post);
int statusCode = response2.getStatusLine().getStatusCode();
System.out.println("statusCode:"+statusCode);
if(statusCode==200){
HttpEntity entity2 = response2.getEntity();
BufferedReader reader2 = new BufferedReader(
new InputStreamReader(entity2.getContent()));
String buffer2;
while((buffer2=reader2.readLine())!=null){
System.out.println(buffer2);
}
}else if(statusCode == 302){//302表示重定向
Header[] hs = response2.getHeaders("Location");
if(hs.length>0){
String url = hs[0].getValue();
post.abort();
get(client,url);
}
}
}
/**
* 模拟GET请求
* @param client
* @param url
* @throws IOException
* @throws ClientProtocolException
*/
private static void get(HttpClient client,String url) throws IOException,
ClientProtocolException {
System.out.println("======GET:"+url+"===========================");
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
BufferedReader reader = new BufferedReader(
new InputStreamReader(entity.getContent(),"UTF-8"));
String buffer = null;
while((buffer=reader.readLine())!=null){
System.out.println(buffer);
}
get.abort();
}
}
分享到:
相关推荐
在Web开发中,特别是使用JSP(Java Server Pages)进行服务器端编程时,经常需要通过HTTP客户端库(如HttpClient)来发起网络请求,包括GET和POST请求。其中,POST请求通常用于向服务器提交数据,例如用户表单数据的...
当然了,正如前面说到的,如果我们自己使用java.net.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于...
1. **httpclient.jar**: 这是核心的HttpClient实现,提供了HTTP协议的客户端实现,包括GET、POST等请求方法,以及处理重定向、cookies和HTTP连接管理等功能。 2. **httpcore.jar**: 这是HttpClient的基础,包含了...
通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`MultipartEntity`对象,以及处理好请求和响应过程中可能出现的各种异常情况。同时,需要注意解决中文乱码等问题...
2. `HttpURLConnection`:这是`java.net.URLConnection`的一个子类,提供了更高级的功能,如设置请求方法(GET、POST等)、管理连接超时和处理响应代码。尽管比`URL`类更强大,但使用起来仍然相对复杂。 ```java ...
例如,你可以使用`CloseableHttpClient`创建一个HTTP客户端实例,`HttpGet`或`HttpPost`构建请求,然后通过`execute`方法发送请求并获取响应。 ```java CloseableHttpClient httpClient = HttpClients.create...
与HttpClient类似,它也支持GET和POST请求,但使用的是不同的API。 对于数据交换格式,文章对比了XML和JSON的解析。XML是一种结构化数据表示,适用于复杂的数据结构,而JSON则以其简洁和易用性而流行,常用于轻量级...
在Web应用开发中,HttpClient不仅能够实现GET、POST、PUT、HEAD等HTTP方法,还能处理请求头和响应正文,使得开发者可以方便地向服务器发送请求并接收响应。尽管HttpClient并不支持JavaScript脚本的执行,但它为构建...
这个库提供了丰富的功能,使得开发者能够方便地实现HTTP协议的各种操作,包括GET、POST请求,支持HTTPS,处理Cookie,管理请求头,以及进行身份认证等。HttpClient在开发基于HTTP的应用程序时非常常用,特别是对于...
HttpClient1可能是HttpClient库的一个示例或者封装,展示了如何使用HttpClient发送GET和POST请求。而SpringMvcServer则可能是一个简单的Spring MVC服务器端应用,用于接收并处理这些HTTP请求。 HttpClient库的使用...
当HttpClient发起一个GET或POST请求,如果服务器返回的状态码表明需要进行重定向(例如301、302),HttpClient会自动处理重定向,即它会自动发送新的请求到重定向的目标URL,并返回那个URL的响应内容。然而,如果...
5. **POST请求发送**:使用Java的`HttpURLConnection`或第三方库如Apache HttpClient,构造POST请求,将签名后的参数发送到支付宝服务器。 6. **处理响应**:支付宝服务器会返回一个包含支付结果的XML或JSON响应。...
通常,这涉及到HTTP请求的发送,如POST或GET方法,将短信内容和接收号码作为参数传递。可能使用的Java库包括HttpURLConnection或者Apache HttpClient。 6. **二次开发**: 这个源码程序可以作为一个基础,开发者...
首先,HttpClient库使得开发者能够方便地向Web服务器发送HTTP请求,包括GET、POST等方法。在查询系统中,HttpClient通常用于向目标网站发起请求,获取网页的HTML内容。这可以通过创建HttpClient实例,配置请求头,...
Servlet通过重写`doGet`和`doPost`方法来响应GET和POST请求,并使用`request`和`response`对象来获取请求参数和向客户端发送响应。 3. JSP(JavaServer Pages): JSP是Java Web开发中的视图技术,允许开发者在...
- **HTTP请求**:使用Java的`java.net.URL`和`java.net.HttpURLConnection`类,JSP可以发送HTTP GET或POST请求到目标网页。 - **HTML解析**:解析网页内容通常是爬虫的重要部分。可以使用如Jsoup这样的库,它提供...
在Java中,可以使用HttpURLConnection或Apache HttpClient库来实现。以下是一个使用HttpURLConnection的例子: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net....
这涉及到了java.net包中的HttpURLConnection或Apache HttpClient库,包括GET、POST请求的创建,设置请求头,处理响应状态码和数据。 3. **SessionServlet**: 在21-SessionServlet中,我们可能会看到有关Java ...