`

DefaultHttpClient使用

阅读更多

 

  1 httpClient封装后使用,get和post方法

package util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

/**
 * @Title:TestHttpClient
 * @Author Tony
 * @Date: 2014年6月21日 下午3:29:37
 * @Description:  httpClient使用,1 发送post请求   2 发送get请求 
 * 
 */
public class TestHttpClient {

 
	/**
	* @Title: methodPost 
	* @Description: httpclient方法中post提交数据的使用 
	* @param @return
	* @param @throws Exception   
	* @return String    
	* @throws
	 */
	public static String methodPost() throws Exception {
		DefaultHttpClient httpclient = new DefaultHttpClient();
		// // 代理的设置
		// HttpHost proxy = new HttpHost("10.60.8.20", 8080);
		// httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
		// proxy);

		// 目标地址
		HttpPost httppost = new HttpPost(
				"http://localhost:8011/testServlet");
		System.out.println("请求: " + httppost.getRequestLine());
 
		// post 参数 传递
		List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>();
		nvps.add(new BasicNameValuePair("content", "11111111")); // 参数
		nvps.add(new BasicNameValuePair("path", "D:/file")); // 参数
		nvps.add(new BasicNameValuePair("name", "8")); // 参数
		nvps.add(new BasicNameValuePair("age", "9")); // 参数
		nvps.add(new BasicNameValuePair("username", "wzt")); // 参数

		httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); // 设置参数给Post

		// 执行
		HttpResponse response = httpclient.execute(httppost);
		HttpEntity entity = response.getEntity();
		System.out.println(response.getStatusLine());
		if (entity != null) {
			System.out.println("Response content length: "
					+ entity.getContentLength());
		}
		// 显示结果
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				entity.getContent(), "UTF-8"));

		String line = null;
		while ((line = reader.readLine()) != null) {
			System.out.println(line);
		}
		if (entity != null) {
			entity.consumeContent();
		}
		return null;

	}
	
	/**
	* @Title: methodGet 
	* @Description:  以get方法提交数的使用 
	* @param @return
	* @param @throws Exception   
	* @return String    
	* @throws
	 */
	public static  String methodGet() throws  Exception { 
		   DefaultHttpClient httpclient = new DefaultHttpClient();   
//			     // 代理的设置   
//			      HttpHost proxy = new HttpHost("10.60.8.20", 8080);   
//			      httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);   


		    // 目标地址   
		     HttpPost httpGet = new HttpPost("http://localhost:8011/testServlet");   
		     
		     // 构造最简单的字符串数据   
		      StringEntity reqEntity = new StringEntity("name=test&password=test");   
		     // 设置类型   
		      reqEntity.setContentType("application/x-www-form-urlencoded");   
		     // 设置请求的数据   
		      httpGet.setEntity(reqEntity);   
		  
		     // 执行   
		     HttpResponse response = httpclient.execute(httpGet);   
		     HttpEntity entity = response.getEntity();   
		     System.out.println(response.getStatusLine());   
		     
		    if (entity != null) {   
		       System.out.println("Response content length: " + entity.getContentLength());  //得到返回数据的长度  
		     }   
		     // 显示结果   
		     BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); 
		     
		     String line = null;   
		    while ((line = reader.readLine()) != null) {   
		         System.out.println(line);   
		     }   
		    if (entity != null) {   
		          entity.consumeContent();   
		     }   
		    return null; 

		} 
	
	/**
	 * 模拟url访问 从特定的url中获取json
	 * 
	 * @param urlStr
	 * @param params
	 * @return json object ,or null if failed
	 * 参数经过封装后传过来 ,提交为 post请求
	 */
	private static JSONObject getJsonFromUrl(String urlStr,
			Map<String, String> params) {
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost(urlStr);
		JSONObject json = null;
		try {
			if (params != null) {
				Iterator<String> keys = params.keySet().iterator();
				List<NameValuePair> nvps = new ArrayList<NameValuePair>();
				while (keys.hasNext()) {
					String key = keys.next();
					nvps.add(new BasicNameValuePair(key, params.get(key)));
				}
				httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
			}
			HttpResponse response = httpClient.execute(httpPost);
			HttpEntity entity = response.getEntity();
			InputStream is = entity.getContent();
			byte[] bytes = new byte[256];
			StringBuffer sb = new StringBuffer();
			while (is.read(bytes) > 0) {
				sb.append(new String(bytes));
				bytes = new byte[256];
			}
			json = JSONObject.fromObject(sb.toString());
		} catch (Exception e) {
			 e.printStackTrace();
		}

		return json;
	}
	
	/**
	* @Title: main 
	* @Description: 测试类 
	* @param @param args   
	* @return void    
	* @throws
	 */
	public static void main(String[] args) {
		try {
			TestHttpClient.methodGet();
//			TestHttpClient.methodPost();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

 2 后台接受数据的servlet 

 

public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	
	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding( "utf-8");
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		
		String name = request.getParameter("name");
		System.out.println("name 变量数据: "+name);
	}
}

 

 

 

 

分享到:
评论
11 楼 java_frog 2017-12-25  
httpclient4里才有default
10 楼 lizhenlzlz 2017-07-14  
lizhenlzlz 写道
HttpHost proxy = new HttpHost("ip",端口); 
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
对我有用

再次对我有用
9 楼 lizhenlzlz 2017-06-01  
HttpHost proxy = new HttpHost("ip",端口); 
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
对我有用
8 楼 kennykinte 2015-12-04  
methodGet()方法里
HttpPost httpGet = new HttpPost("http://localhost:8011/testServlet"); 

实例化的是HttpPost对象。。。。楼主是来搞笑的吗?
7 楼 孟明视 2015-09-20  
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient;
6 楼 孟明视 2015-09-20  
import org.apache.h没啊。这个包
5 楼 savage-qq 2014-07-16  
请问,安卓客户端不是已经集成httpClient了嘛? 为什么还需要专门用jar包?
4 楼 username2 2014-06-21  
sulong2088 写道
只有个测试方法,你能把客户端  服务端代码给我贴全吗?


今天刚看到问题,又重新整理了一下整个方法,加入了一个jar文件,服务端就是一个Servlet就可以了。
3 楼 sulong2088 2014-04-02  
只有个测试方法,你能把客户端  服务端代码给我贴全吗?
2 楼 MyJavaDisk 2013-12-03  
谢谢!谢谢,谢谢!
1 楼 MyJavaDisk 2013-12-03  
       

相关推荐

    DefaultHttpClient_httpsDemo.rar

    本示例"DefaultHttpClient_httpsDemo"聚焦于如何使用`DefaultHttpClient`来实现HTTPS请求,并且绕过安全认证,这在特定场景下可能是必要的,比如测试环境或自签名证书的应用。 首先,理解HTTPS是HTTP(超文本传输...

    httpclient-4.5所需jar包

    DefaultHttpClient使用了BasicHttpConnectionManager,而HttpClient 4.5则推荐使用PoolingHttpClientConnectionManager,它可以复用已建立的连接,提高性能。 7. **认证机制**:HttpClient支持多种认证机制,如...

    httpClient jar包

    DefaultHttpClient使用了单一连接模式,而HttpClient 4.x引入了多连接管理器,如PoolingHttpClientConnectionManager,提高了性能和可扩展性。 此外,提到的`log4.jar`是Apache Log4j的日志框架,它提供了丰富的...

    Android学习之HttpClient练习(一)

    HttpClient httpClient = new DefaultHttpClient(); ``` **3. 设置HTTP请求参数** HttpClient允许我们创建`HttpGet`或`HttpPost`对象来设置URL和其他请求参数。例如,创建一个GET请求: ```java ...

    httpclient jar

    import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.CoreConnectionPNames; import org.apache....

    httpclient过时用的jar包

    使用版本锁定或依赖管理工具可以帮助控制版本冲突,同时确保所有开发者都在使用相同版本的库。 9. **配置和优化**:HttpClient有许多配置选项,如连接池大小、超时设置、重试策略等,可以根据项目需求进行调整以...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    5. DefaultHttpClient类的使用 6. HttpClient的自定义 7. POST请求的发送 8. 请求头和请求体的指定 9. HTTPS服务器的交互 使用JAVA的HttpClient库来发送POST请求可以帮助我们与HTTPS服务器进行交互,但需要注意证书...

    java使用httpclient发送post请求示例

    Java 使用 HttpClient 发送 POST 请求是网络编程中常见的任务,尤其在与 Web 服务进行交互时。Apache HttpClient 是一个强大的库,允许 Java 开发者轻松地执行 HTTP 请求。在这个示例中,我们将深入探讨如何使用 ...

    Http(get)请求数据Android Studio使用HttpClient

    HttpClient httpClient = new DefaultHttpClient(); ``` ## 4. 设置请求参数 创建`HttpGet`对象来表示GET请求,并设置URL: ```java HttpGet httpGet = new HttpGet("http://example.com/api/data"); ``` 这里,`...

    Android使用Apache的HttpClient访问微Web站点

    本实例描述了Android平台下使用Apache开源项目的HttpClient访问网络的示例。分别使用HttpClient下的两个子实现类,DefaultHttpClient和AndroidHttpClient分别进行演示。

    Android HTTP 客户端编程-使用Apache接口.pdf

    使用`DefaultHttpClient`的`execute`方法发送请求,获取`HttpResponse`,从中读取服务器的响应信息,并通过自定义的`showDialog`方法显示在对话框中。 测试这个功能时,需要确保Tomcat服务器已启动,然后在Android...

    采用 HttpClient GET、POST 方式 提交数据到服务器

    ### 使用HttpClient通过GET和POST方式提交数据到服务器 在现代Web开发中,客户端与服务器之间的交互至关重要。HTTP协议是Web应用中最常用的通信协议之一,而HttpClient则是Java中用于发送HTTP请求的强大工具。本文...

    Android如何从服务器获取图片

    2. 创建HttpClient对象:使用DefaultHttpClient对象来执行HttpGet对象。 3. 执行HttpGet对象:使用HttpClient对象执行HttpGet对象,以获取服务器中的图片资源。 4. 获取图片流:使用HttpEntity对象获取图片流。 5. ...

    android UDP和TCP的封装

    在使用`DefaultHttpClient`时,务必确保在完成网络操作后调用`close()`方法释放资源,否则可能导致内存泄露。为了确保这一点,`ProxyHttpClient`重写了`finalize()`方法,如果在类实例被垃圾回收前未调用`close()`,...

    HttpClient使用教程 事例

    例如,可以使用`SingleClientConnManager`和`DefaultHttpClient`。 ```java SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("https", sslContext.getSocketFactory(),...

    使用HttpClient异步请求数据

    本篇将详细讲解如何使用`HttpClient`进行异步请求数据,并结合Android的`AsyncTask`来处理后台任务,避免阻塞UI线程。 首先,理解`HttpClient`的基本使用方法。`HttpClient`包含几个关键组件,如`HttpClient`实例、...

    Android下使用JSON实现HTTP请求.docx

    3. 使用`DefaultHttpClient`发送请求,并获取`HttpResponse`。 4. 解析`HttpResponse`中的JSON数据。 5. 在服务器端,使用JSON解析库解析接收到的JSON字符串,并返回响应。 在实际项目中,为了更好地管理和处理网络...

    Android使用HttpClient实现上传下载功能并监控进度

    然而,如果你仍然选择使用HttpClient,务必处理好权限问题,特别是在Android 6.0(API级别23)及以上版本,需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 ImageWithProgress这个文件...

Global site tag (gtag.js) - Google Analytics