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

HttpClient基本功能使用(结合Struts2传参)

阅读更多

HttpClient基本功能的使用

a)    环境准备

·         apache下载httpClient;

·         解压、将lib下的jar导入工程;

b)   几个主要类解释

类名

作用

HttpClient

HttpClient代表了一个http的客户端,HttpClient接口定义了大多数基本的http请求执行行为.

HttpEntity

entity是发送或者接收消息的载体。entities 可以通过requestresponse获取到.

HttpConnection

HttpConnection代表了一个http连接。

 

 

 

 

 

 

 

c)    第一个程序

说明: get方法访问www.baidu.com并返回内容

Code:

 

Testing Code

//创建默认的httpClient实例.

HttpClient httpclient = new DefaultHttpClient();

try {

//创建httpget.

   HttpGet httpget = new HttpGet("http://www.baidu.com/");

System.out.println("executing request " + httpget.getURI());

//执行get请求.

   HttpResponse response = httpclient.execute(httpget);

//获取响应实体

   HttpEntity entity = response.getEntity();

System.out.println("--------------------------------------");

//打印响应状态

   System.out.println(response.getStatusLine());

      if (entity != null) {

//打印响应内容长度

          System.out.println("Response content length: " + entity.getContentLength());

//打印响应内容

         System.out.println("Response content: " + EntityUtils.toString(entity));

            }

        System.out.println("------------------------------------");

        } finally {

            //关闭连接,释放资源

            httpclient.getConnectionManager().shutdown();

        }

 

输出:

executing request http://www.baidu.com/

----------------------------------------

HTTP/1.1 200 OK

Response content length: 6759

Response content: <!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>百度一下,你就知道      </title>…(此处省略打印信息)

-----------------------------------------

a)    如何传递参数

说明: post方法访问本地应用并根据传递参数不同返回不同结果

Code:

 

Struts2配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
        "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<constant name="struts.devMode" value="true" />
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>

	<package name="Ajax" extends="json-default" namespace="/Ajax">
		<action name="serivceJ" class="com.wxl.action.TestAction"
			method="serivceJ">
			<result type="json"></result>
		</action>
	</package>

	<!-- 
		<package name="test" extends="struts-default" namespace="/test">
		<action name="test" class="com.wxl.action.TestAction"
		method="serivceJ">
		<result>/index.jsp</result>
		</action>
		</package>
	-->

</struts>

  

Action Code

/**
 * 
 */
package com.wxl.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author wangxl
 * 
 */
public class TestAction extends ActionSupport {

	public void serivceJ() throws Exception {
		try {
			HttpServletResponse response = ServletActionContext.getResponse();
			HttpServletRequest request = ServletActionContext.getRequest();
			response.setCharacterEncoding("UTF-8");
			String type = request.getParameter("type");
			String c = "none";
			if (type != null && !"".equals(type)) {
				if (type.equalsIgnoreCase("car")) {
					c = "Hello:给你一辆宝马";
				} else if (type.equalsIgnoreCase("house")) {
					c = "Hello:给你一栋别墅";
				}
			}
			response.getWriter().write(c);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

 

TestingCode

/**
 * 
 */
package com.wxl.http;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

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.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

/**
 * @author wangxl
 * 
 */
public class HttpClientTest {

	private static String url = "http://localhost:8088/Struts2/Ajax/serivceJ.action";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建默认的httpClient实例
		HttpClient httpclient = new DefaultHttpClient();
		// 创建post请求
		HttpPost post = new HttpPost(url);
		// 创建参数队列
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("type", "car"));
		UrlEncodedFormEntity uefEntity;
		try {
			uefEntity = new UrlEncodedFormEntity(params, "UTF-8");
			post.setEntity(uefEntity);
			System.out.println("--------------------------------------");
			System.out.println("Executing request url:" + post.getURI());
			HttpResponse response = httpclient.execute(post);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				System.out.println("--------------------------------------");
				System.out.println("Response content: "
						+ EntityUtils.toString(entity, "UTF-8"));
				System.out.println("--------------------------------------");
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 关闭连接,释放资源
			httpclient.getConnectionManager().shutdown();
		}
	}
}

 

 

输出:

--------------------------------------
Executing request url:http://localhost:8088/Struts2/Ajax/serivceJ.action
--------------------------------------
Response content: Hello:给你一辆宝马
--------------------------------------

分享到:
评论

相关推荐

    struts2 android httpclient 上传文件

    Struts2、Android和HttpClient是三个关键的技术领域,它们在本次文件上传的场景中相互结合。Struts2是一个流行的Java Web框架,用于构建MVC(模型-视图-控制器)结构的应用程序。Android是Google开发的移动操作系统...

    HttpClient模拟get,post请求并发送请求参数(json等)

    HttpClient还支持其他高级功能,如重试策略、Cookie管理、多部分表单数据上传等。在实际项目中,我们通常会封装一个HttpClientUtil工具类,以简化请求的创建和执行过程。 例如,一个简单的HttpClientUtil工具类可能...

    JDK 11 HttpClient的基本使用指南

    在Java 11及更高版本中,HttpClient是一个重要的新...通过本教程,你已经掌握了创建HttpClient、发送异步请求和处理响应的基本方法,接下来可以进一步探索高级特性和用法,比如错误处理、流处理、自定义响应处理器等。

    HttpClient post提交文件加传参的demo

    这个"HttpClient post提交文件加传参的demo"是针对初学者的一个实例,帮助理解如何使用HttpClient来实现这样的功能。在此,我们将详细探讨HttpClient的使用以及如何通过它进行文件上传和参数传递。 首先,你需要...

    struts2测试工具

    压缩包内的"鬼哥struts2测试工具.exe"可能是一个由个人开发者或社区创建的专用测试工具,它可能包含了特定于Struts2的测试辅助功能,如自动化测试脚本、漏洞扫描或性能监控等。然而,由于描述中提到作者对这个工具的...

    Httpclient使用jar包三合一,基本使用方法

    Http协议使用封装jar包(commons-codec-1.3.jar、commons-httpclient-3.1.jar、commons-logging-1.1.jar) 简单使用方法: public static void main(String[] args) { // String str1 = &quot;...;...

    httpclient使用教程

    #### HttpClient基本功能的使用示例 以GET方法为例,演示如何使用HttpClient执行简单的HTTP请求: 1. **创建HttpClient实例**:初始化HttpClient对象。 2. **创建连接方法实例**:此处使用`GetMethod`,在构造函数...

    commons-httpclient,java中使用httpclient中使用的扩展工具

    9. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证和NTLM认证。`AuthScheme`接口定义了认证方案,而`Credentials`接口表示认证凭据。 10. **代理设置**:如果你的请求需要通过代理服务器,...

    使用HttpClient必须的jar包

    在Java项目中使用HttpClient时,为了确保功能的完整性和正确性,通常需要引入一系列的jar包。这些jar包包含了HttpClient的核心组件、依赖库和其他必要的工具,它们共同构成了HttpClient的运行环境。 以下是一些关键...

    httpclient-4.5使用需要的所有jar包

    2. **httpcore-4.4.13.jar**:HTTP Core是HTTPClient的基础,提供了网络通信的基本组件,包括TCP连接、输入/输出流和HTTP协议解析器。它是HTTPClient与操作系统进行网络交互的桥梁。 3. **httpmime-4.5.13.jar**:...

    httpclient4.0 使用帮助、例子

    建议在实际开发中,结合文档深入理解HTTPClient的功能和最佳实践。 总结,HTTPClient 4.0是一个强大且灵活的HTTP客户端库,它提供了丰富的功能,能够满足大多数HTTP通信需求。通过阅读提供的文档和示例,开发者可以...

    httpclient.jar包下载

    3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证、NTLM等,并且可以与SSL/TLS协议结合,确保数据传输的安全性。 4. **重试和恢复策略**:HttpClient内置了重试和恢复策略,当网络...

    httpclient简单使用

    本教程将基于标题"HTTPClient简单使用"和提供的文件`HttpService`、`HttpClient`来阐述HTTPClient的基本使用方法。 1. **HTTPClient简介** HTTPClient是Apache的 HttpClient库,它为Java开发者提供了全面的HTTP...

    HttpClient介绍和使用文档

    此外,HttpClient可以与其他Apache Commons库,如HttpCore、HttpComponents等配合使用,实现更复杂的网络功能。 总之,HttpClient是Java中用于HTTP通信的强大工具,无论是在处理简单的HTTP GET/POST请求,还是应对...

    使用HttpClient下载图片

    HttpURLConnection与HttpClient的区别: HttpClient是个很不错的...HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都没封装,用起来太原始,比如重访问的自定义,以及一些高级功能等。

    HttpClient 基本用法

    下面将详细讲解HttpClient的基本用法,尤其是GET方法的使用。 首先,创建一个HttpClient的实例,这是所有操作的基础。通常,我们可以使用默认构造函数创建一个HttpClient对象,如下所示: ```java HttpClient ...

    HttpClient 功能jar包

    在实际使用HttpClient时,开发者首先需要创建一个HttpClient实例,然后配置各种参数,如连接超时、重试策略等。接着,创建HttpGet或HttpPost对象,设置URL、请求头和请求体。执行请求后,可以通过HttpResponse获取...

Global site tag (gtag.js) - Google Analytics