最近公司要我调试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应用中的API接口。下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. *...
【Android调用Webservice】这个压缩包文件主要涵盖了在安卓平台上使用JSON、XML与Web服务进行交互的相关技术,以及可能涉及到的UPnP(通用即插即用)协议的应用。以下是对这些知识点的详细说明: 1. **JSON**:JSON...
该资源是一个针对企业通用的公司宣传应用的Android源码,主要使用了Java语言进行开发,并且可能集成了一些Apache的相关库。这个源码包是开发者或学习者了解如何构建一款面向企业的Android应用程序的理想起点。 首先...
6. **Commons Logging**:这是一个通用的日志接口,允许开发者在不改变代码的情况下切换不同的日志实现,如Log4j、Java内置的日志框架等。在使用第三方库时,通过Commons Logging可以方便地调整日志级别和输出方式。...
"apache"可能指的是Apache工具或库,如Apache HttpClient,用于网络请求,或者Apache Commons,提供各种通用功能模块,可能在应用中被用到。 【文件内容推测】 基于提供的文件名"基于Android的大学课程及日记的管理...
在对接千应支付接口的过程中,开发者需要注意以下通用要点: - **API文档**: 熟读官方提供的API文档,理解每个接口的参数、返回值和错误代码。 - **调试工具**: 使用Postman或者类似的工具来模拟API调用,便于测试和...
在Android开发中,Java作为主要编程语言,需要掌握类、对象、接口、异常处理、多线程、网络编程等方面的知识。 3. 数据存储 Android提供了多种数据存储方式,包括SharedPreferences用于轻量级偏好设置,文件存储...
7. **Apache相关技术**:标签中提到了Apache,可能意味着项目中使用了一些Apache的开源库,比如Apache HttpClient用于网络请求,或者Apache Commons Lang库来辅助进行各种通用的Java语言功能。 8. **集成开发环境...
3. **3G API接口**:Android SDK提供了调用3G网络的相关接口,如ConnectivityManager和NetworkInfo类,用于检测网络状态,切换数据连接等。 4. **实时数据传输**:学习如何通过3G网络实现实时数据传输,例如在线...
9. **Apache相关库**: 虽然没有具体说明,但“apache”标签可能意味着应用使用了Apache开源项目提供的库,比如`httpclient`或`httpcore`,用于网络通信,或者是`commons-lang3`等通用工具库。 10. **...
UPnP(通用即插即用)则是一种网络协议,用于设备间的自动化发现和控制。在这个项目中,开发者使用了HttpURLConnection和AsyncTask来实现Android应用与Web服务的交互,获取并解析返回的JSON字符串。下面我们将详细...
2. **UPnP库**:在Android中,通常使用开源库如libupnp(也称为miniupnpc)或Apache HttpClient库来实现UPnP功能。这些库提供了对UPnP框架的基本支持,包括设备发现、端口映射等。 3. **设备发现**:使用SSDP...
- **Utils类**:通常会包含各种通用功能,如字符串处理、日期时间转换、网络请求辅助方法等。这些工具类能够减少开发者编写重复代码的时间。 - **ViewUtils**:对UI组件进行操作和优化的工具,如动态设置控件属性...
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 ...
以上每个项目都是Android开发中的一部分,通过实际操作和调试这些示例,学习者可以深入理解Android API的用法,提高编程技能,为实际项目开发打下坚实基础。结合《安卓疯狂讲义》电子书,理论与实践相结合,无疑会...
6. **jiguang-common-1.0.3.jar**:极光通用库,包含了一些共通的工具类和辅助方法,用于支持JPush客户端库的正常运行。 7. **slf4j-api-1.7.7.jar**:简单日志门面(SLF4J)提供了一个API,允许开发人员在运行时...
这些工具类通常是为了提高开发效率,简化复杂操作,或者提供通用的功能模块。在深入探讨之前,我们先了解一下“工具类”的概念。工具类是Java或其他编程语言中的一种特殊类,它们不持有状态(即没有实例变量)或实现...
传统的网络库如HttpClient虽然功能强大,但在现代Android版本中已逐渐被弃用,取而代之的是更高效、更易用的OkHttp。本篇将深入探讨如何基于包建强老师的App研发录,使用OkHttp来封装一个适用于App的网络框架。 ...
Afinal引入了模板方法设计模式,提供了一些通用的操作模板,如数据库的查询、更新等,开发者只需要填充特定的逻辑,即可完成复杂的操作,大大减少了重复代码。 6. **线程管理**: 对于Android多线程问题,Afinal...
5. **Apache相关技术**:标签中提到的“apache”可能是指使用了Apache HttpClient进行网络请求,或者在项目中引用了一些Apache的开源库,如Apache Commons Lang用于通用语言工具,或者Apache HTTP Components作为...