`

使用Apache HttpClient访问JSP发送GET和POST请求

    博客分类:
  • Java
阅读更多

本示例说明了如何使用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();
	}
}

 

分享到:
评论

相关推荐

    jsp 中HttpClient中的POST方法实例详解.docx

    在Web开发中,特别是使用JSP(Java Server Pages)进行服务器端编程时,经常需要通过HTTP客户端库(如HttpClient)来发起网络请求,包括GET和POST请求。其中,POST请求通常用于向服务器提交数据,例如用户表单数据的...

    用HttpClient来模拟浏览器GET POST

    当然了,正如前面说到的,如果我们自己使用java.net.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于...

    org.apache.http相关jar包下载(httpcomponents-client-4.2.5-bin.tar)

    1. **httpclient.jar**: 这是核心的HttpClient实现,提供了HTTP协议的客户端实现,包括GET、POST等请求方法,以及处理重定向、cookies和HTTP连接管理等功能。 2. **httpcore.jar**: 这是HttpClient的基础,包含了...

    HttpClient 4文件上传

    通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`MultipartEntity`对象,以及处理好请求和响应过程中可能出现的各种异常情况。同时,需要注意解决中文乱码等问题...

    向URL发送请求

    2. `HttpURLConnection`:这是`java.net.URLConnection`的一个子类,提供了更高级的功能,如设置请求方法(GET、POST等)、管理连接超时和处理响应代码。尽管比`URL`类更强大,但使用起来仍然相对复杂。 ```java ...

    org.apache.HTTP需要的jar包.zip

    例如,你可以使用`CloseableHttpClient`创建一个HTTP客户端实例,`HttpGet`或`HttpPost`构建请求,然后通过`execute`方法发送请求并获取响应。 ```java CloseableHttpClient httpClient = HttpClients.create...

    Android调用Web应用浅析.pdf

    与HttpClient类似,它也支持GET和POST请求,但使用的是不同的API。 对于数据交换格式,文章对比了XML和JSON的解析。XML是一种结构化数据表示,适用于复杂的数据结构,而JSON则以其简洁和易用性而流行,常用于轻量级...

    HttpClient组件及其在Android开发中的应用探讨.pdf

    在Web应用开发中,HttpClient不仅能够实现GET、POST、PUT、HEAD等HTTP方法,还能处理请求头和响应正文,使得开发者可以方便地向服务器发送请求并接收响应。尽管HttpClient并不支持JavaScript脚本的执行,但它为构建...

    httpclient

    这个库提供了丰富的功能,使得开发者能够方便地实现HTTP协议的各种操作,包括GET、POST请求,支持HTTPS,处理Cookie,管理请求头,以及进行身份认证等。HttpClient在开发基于HTTP的应用程序时非常常用,特别是对于...

    HttpClient&SpringMvc;.zip

    HttpClient1可能是HttpClient库的一个示例或者封装,展示了如何使用HttpClient发送GET和POST请求。而SpringMvcServer则可能是一个简单的Spring MVC服务器端应用,用于接收并处理这些HTTP请求。 HttpClient库的使用...

    httpclient重定向之后获取网址信息示例

    当HttpClient发起一个GET或POST请求,如果服务器返回的状态码表明需要进行重定向(例如301、302),HttpClient会自动处理重定向,即它会自动发送新的请求到重定向的目标URL,并返回那个URL的响应内容。然而,如果...

    支付宝即时支付接口+post方式提交

    5. **POST请求发送**:使用Java的`HttpURLConnection`或第三方库如Apache HttpClient,构造POST请求,将签名后的参数发送到支付宝服务器。 6. **处理响应**:支付宝服务器会返回一个包含支付结果的XML或JSON响应。...

    JSP.rar_jsp s

    通常,这涉及到HTTP请求的发送,如POST或GET方法,将短信内容和接收号码作为参数传递。可能使用的Java库包括HttpURLConnection或者Apache HttpClient。 6. **二次开发**: 这个源码程序可以作为一个基础,开发者...

    基於HttpClient和HtmlParser的簡單查詢系統(源碼)

    首先,HttpClient库使得开发者能够方便地向Web服务器发送HTTP请求,包括GET、POST等方法。在查询系统中,HttpClient通常用于向目标网站发起请求,获取网页的HTML内容。这可以通过创建HttpClient实例,配置请求头,...

    JAVA使用MVC,servlet+jsp做的项目

    Servlet通过重写`doGet`和`doPost`方法来响应GET和POST请求,并使用`request`和`response`对象来获取请求参数和向客户端发送响应。 3. JSP(JavaServer Pages): JSP是Java Web开发中的视图技术,允许开发者在...

    JSP抓取网页的代码

    - **HTTP请求**:使用Java的`java.net.URL`和`java.net.HttpURLConnection`类,JSP可以发送HTTP GET或POST请求到目标网页。 - **HTML解析**:解析网页内容通常是爬虫的重要部分。可以使用如Jsoup这样的库,它提供...

    http请求json并解析数据

    在Java中,可以使用HttpURLConnection或Apache HttpClient库来实现。以下是一个使用HttpURLConnection的例子: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net....

    java 网络编程 代码集合2

    这涉及到了java.net包中的HttpURLConnection或Apache HttpClient库,包括GET、POST请求的创建,设置请求头,处理响应状态码和数据。 3. **SessionServlet**: 在21-SessionServlet中,我们可能会看到有关Java ...

Global site tag (gtag.js) - Google Analytics