`
dengwenwei121
  • 浏览: 40941 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

HttpClient调试android接口-通用方法

 
阅读更多

最近公司要我调试android接口,就封装了一下,记录下来。。做为笔记吧!


package com.dw.test;


public class User {
	  private String id;
	  private String username;
	  private String password;
	  
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password="
				+ password + "]";
	}
	
}

package com.dw.util;

import java.util.List;

import net.sf.json.JSONArray;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientUtil<T> {
	/**
	 * post请求方法, 返回一个对象集合
	 * 
	 * @param url 请求的url
	 * @param objectClass class对象,你想要返回的对象
	 * @param formparams  请求参数
	 * @return List<T> 返回对象集合
	 * @throws Exception
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public List<T> getListPost(String url, Class objectClass,
			List<NameValuePair> formparams) throws Exception {
		// 创建默认的httpClient实例.
		CloseableHttpClient httpclient = HttpClients.createDefault();
		List<T> objList = null;
		try {
			// 创建httppost
			HttpPost httppost = new HttpPost(url);
			// 设置请求的表单编码
			UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(
					formparams, "UTF-8");

			// 设置http请求参数
			httppost.setEntity(uefEntity);

			System.out.println("executing request " + httppost.getRequestLine());

			// 发送请求
			CloseableHttpResponse response = httpclient.execute(httppost);
			// 请求响应码
			int code = response.getStatusLine().getStatusCode();
			if (code == 200) {
				try {
					// 获取响应的数据
					HttpEntity entity = response.getEntity();

					if (entity != null) {
						String json = EntityUtils.toString(entity, "UTF-8");

						System.out.println("Response content: " + json);

						JSONArray jsonobj = JSONArray.fromObject(json);

						objList = (List<T>) JSONArray.toCollection(jsonobj,
								objectClass);
					}
				} finally {
					response.close();
				}
			} else {
				System.out.println("请求失败!");
			}
		} finally {
			httpclient.close();
		}
		return objList;
	}

	/**
	 * post请求方法, 返回一个对象
	 * 
	 * @param url 请求的url
	 * @param objectClass class对象,你想要返回的对象
	 * @param formparams 设置请求参数
	 * @return T 返回对象
	 * @throws Exception
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public T getObjPost(String url, Class objectClass,
			List<NameValuePair> formparams) throws Exception {
		// 创建默认的httpClient实例.
		CloseableHttpClient httpclient = HttpClients.createDefault();
		T obj = null;
		try {
			// 创建httppost
			HttpPost httppost = new HttpPost(url);
			// 设置请求的表单编码
			UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(
					formparams, "UTF-8");

			// 设置http请求参数
			httppost.setEntity(uefEntity);

			System.out
					.println("executing request " + httppost.getRequestLine());

			// 发送请求
			CloseableHttpResponse response = httpclient.execute(httppost);
			// 请求响应码
			int code = response.getStatusLine().getStatusCode();
			if (code == 200) {
				try {
					// 获取响应的数据
					HttpEntity entity = response.getEntity();

					if (entity != null) {
						String json = EntityUtils.toString(entity, "UTF-8");

						System.out.println("Response content: " + json);

						JSONArray jsonobj = JSONArray.fromObject(json);

						List<T> objList = (List<T>) JSONArray.toCollection(
								jsonobj, objectClass);
						if (objList != null && objList.size() > 0) {
							if (objList.size() <= 1) {
								obj = objList.get(0);
							}
						}
					}
				} finally {
					response.close();
				}
			} else {
				System.out.println("请求失败!");
			}
		} finally {
			httpclient.close();
		}
		return obj;
	}
}

package com.dw.util;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.dw.test.User;

public class HttpClientTest {
 private static HttpClientUtil<User> http = null;
 private static List<NameValuePair> formparams = null;

 @Before
 public void newUser() {
  http = new HttpClientUtil<User>();
  formparams = new ArrayList<NameValuePair>();
 }

 @After
 public void clerformparams() {
  formparams = null;
 }

 @Test
 public void postListTest() throws Exception {
  //请求参数
  formparams.add(new BasicNameValuePair("names", "邓文伟"));
  formparams.add(new BasicNameValuePair("password", "123"));

  List<User> listUser = http.getListPost(
    "http://localhost:8080/testPlatform/indexs.htm", User.class,
    formparams);
  System.out.println(listUser);
 }
 @Test
 public void postUserTest() throws Exception {
  //请求参数
  formparams.add(new BasicNameValuePair("names", "邓文伟"));
  formparams.add(new BasicNameValuePair("password", "123"));
  
  User user= http.getObjPost(
    "http://localhost:8080/testPlatform/indexs.htm", User.class,
    formparams);
  System.out.println(user.getUsername());
 }
}




代码和jar包:http://download.csdn.net/detail/dengwenwei121/8168261



分享到:
评论

相关推荐

    使用HttpClient调试android接口-通用方法

    在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. *...

    安卓网站交互JSONxmlWebserviceUPnP相关-Android调用Webservice.rar

    【Android调用Webservice】这个压缩包文件主要涵盖了在安卓平台上使用JSON、XML与Web服务进行交互的相关技术,以及可能涉及到的UPnP(通用即插即用)协议的应用。以下是对这些知识点的详细说明: 1. **JSON**:JSON...

    android应用源码企业通用公司宣传应用源码.zip源码资源下载

    该资源是一个针对企业通用的公司宣传应用的Android源码,主要使用了Java语言进行开发,并且可能集成了一些Apache的相关库。这个源码包是开发者或学习者了解如何构建一款面向企业的Android应用程序的理想起点。 首先...

    android应用中jar包下载

    6. **Commons Logging**:这是一个通用的日志接口,允许开发者在不改变代码的情况下切换不同的日志实现,如Log4j、Java内置的日志框架等。在使用第三方库时,通过Commons Logging可以方便地调整日志级别和输出方式。...

    参考文档-基于Android的大学课程及日记的管理.zip

    "apache"可能指的是Apache工具或库,如Apache HttpClient,用于网络请求,或者Apache Commons,提供各种通用功能模块,可能在应用中被用到。 【文件内容推测】 基于提供的文件名"基于Android的大学课程及日记的管理...

    千应支付接口demo

    在对接千应支付接口的过程中,开发者需要注意以下通用要点: - **API文档**: 熟读官方提供的API文档,理解每个接口的参数、返回值和错误代码。 - **调试工具**: 使用Postman或者类似的工具来模拟API调用,便于测试和...

    android无线监控开题报告.pdf

    在Android开发中,Java作为主要编程语言,需要掌握类、对象、接口、异常处理、多线程、网络编程等方面的知识。 3. 数据存储 Android提供了多种数据存储方式,包括SharedPreferences用于轻量级偏好设置,文件存储...

    Android 仿Siri的中文语音助理源码.zip源码资源下载

    7. **Apache相关技术**:标签中提到了Apache,可能意味着项目中使用了一些Apache的开源库,比如Apache HttpClient用于网络请求,或者Apache Commons Lang库来辅助进行各种通用的Java语言功能。 8. **集成开发环境...

    3G Android实战课程(.list文件)

    3. **3G API接口**:Android SDK提供了调用3G网络的相关接口,如ConnectivityManager和NetworkInfo类,用于检测网络状态,切换数据连接等。 4. **实时数据传输**:学习如何通过3G网络实现实时数据传输,例如在线...

    Android 闪光灯手电筒软件源码.zip源码资源下载

    9. **Apache相关库**: 虽然没有具体说明,但“apache”标签可能意味着应用使用了Apache开源项目提供的库,比如`httpclient`或`httpcore`,用于网络通信,或者是`commons-lang3`等通用工具库。 10. **...

    安卓网站交互JSONxmlWebserviceUPnP相关-使用HttpURLConnectionAsyncTask访问webservice接口返回json字符串.rar

    UPnP(通用即插即用)则是一种网络协议,用于设备间的自动化发现和控制。在这个项目中,开发者使用了HttpURLConnection和AsyncTask来实现Android应用与Web服务的交互,获取并解析返回的JSON字符串。下面我们将详细...

    android upnp 项目

    2. **UPnP库**:在Android中,通常使用开源库如libupnp(也称为miniupnpc)或Apache HttpClient库来实现UPnP功能。这些库提供了对UPnP框架的基本支持,包括设备发现、端口映射等。 3. **设备发现**:使用SSDP...

    AndroidCommon:Android快速开发工具

    - **Utils类**:通常会包含各种通用功能,如字符串处理、日期时间转换、网络请求辅助方法等。这些工具类能够减少开发者编写重复代码的时间。 - **ViewUtils**:对UI组件进行操作和优化的工具,如动态设置控件属性...

    Android 开发技巧

    0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 ...

    疯狂安卓讲义全部demo

    以上每个项目都是Android开发中的一部分,通过实际操作和调试这些示例,学习者可以深入理解Android API的用法,提高编程技能,为实际项目开发打下坚实基础。结合《安卓疯狂讲义》电子书,理论与实践相结合,无疑会...

    java集成jpush极光推送所用到的JAR包

    6. **jiguang-common-1.0.3.jar**:极光通用库,包含了一些共通的工具类和辅助方法,用于支持JPush客户端库的正常运行。 7. **slf4j-api-1.7.7.jar**:简单日志门面(SLF4J)提供了一个API,允许开发人员在运行时...

    淘淘商城工具类.zip。。。。。。。

    这些工具类通常是为了提高开发效率,简化复杂操作,或者提供通用的功能模块。在深入探讨之前,我们先了解一下“工具类”的概念。工具类是Java或其他编程语言中的一种特殊类,它们不持有状态(即没有实例变量)或实现...

    okHttp基于App研发录网络框架的封装

    传统的网络库如HttpClient虽然功能强大,但在现代Android版本中已逐渐被弃用,取而代之的是更高效、更易用的OkHttp。本篇将深入探讨如何基于包建强老师的App研发录,使用OkHttp来封装一个适用于App的网络框架。 ...

    Afinal安卓快速开发框架 v1.0.zip

    Afinal引入了模板方法设计模式,提供了一些通用的操作模板,如数据库的查询、更新等,开发者只需要填充特定的逻辑,即可完成复杂的操作,大大减少了重复代码。 6. **线程管理**: 对于Android多线程问题,Afinal...

    安卓大作业——类似微信(可能)

    5. **Apache相关技术**:标签中提到的“apache”可能是指使用了Apache HttpClient进行网络请求,或者在项目中引用了一些Apache的开源库,如Apache Commons Lang用于通用语言工具,或者Apache HTTP Components作为...

Global site tag (gtag.js) - Google Analytics