xUtils的网络请求简单封装
2016-07-27 16:28
316 查看
其他的前提条件就不多说了,只要你会使用xutils就完全可以使用。不多说了,直接上代码。
HttpxUtils.java类:
/**
* @Title 封装xUtils网络请求
* @Authour zhoujp
* @Time 2016年7月27日 下午3:25:21
*
*/
public class HttpxUtils {
/**
* 发送get请求
*
* @param <T>
*/
public static <T> Cancelable Get(String url, Map<String, String> map, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
if (null != map) {
for (Map.Entry<String, String> entry : map.entrySet()) {
params.addQueryStringParameter(entry.getKey(), entry.getValue());
}
}
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 发送post请求
*
* @param <T>
*/
public static <T> Cancelable Post(String url, Map<String, Object> map, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
if (null != map) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
params.addParameter(entry.getKey(), entry.getValue());
}
}
Cancelable cancelable = x.http().post(params, callback);
return cancelable;
}
/**
* 上传文件
*
* @param <T>
*/
public static <T> Cancelable UpLoadFile(String url, Map<String, Object> map, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
if (null != map) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
params.addParameter(entry.getKey(), entry.getValue());
}
}
params.setMultipart(true);
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 下载文件
*
* @param <T>
*/
public static <T> Cancelable DownLoadFile(String url, String filepath, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
// 设置断点续传
params.setAutoResume(true);
params.setSaveFilePath(filepath);
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
public class JsonResponseParser implements ResponseParser {
// 检查服务器返回的响应头信息
@Override
public void checkResponse(UriRequest request) throws Throwable {
}
/**
* 转换result为resultType类型的对象
*
* @param resultType
* 返回值类型(可能带有泛型信息)
* @param resultClass
* 返回值类型
* @param result
* 字符串数据
* @return
* @throws Throwable
*/
@Override
public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
return new Gson().fromJson(result, resultClass);
}
}
}
简单测试用例:
@ContentView(R.layout.activity_main)
public class MainActivity extends Activity {
@ViewInject(R.id.btn_get)
private Button btn_get;// get请求
@ViewInject(R.id.btn_post)
private Button btn_post;// post请求
@ViewInject(R.id.btn_load)
private Button btn_load;// 上传文件
@ViewInject(R.id.btn_down)
private Button btn_down;// 下载文件
@ViewInject(R.id.btn_get_xml)
private Button btn_get_xml;// 发送get请求(服务器以xml格式返回)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.view().inject(this);// 初始化
}
@Event(value = { R.id.btn_get, R.id.btn_post, R.id.btn_load, R.id.btn_down, R.id.btn_get_xml })
private void getButtonEvent(View v) {
switch (v.getId()) {
case R.id.btn_get:
String urlget = "http://api.k780.com:88/?app=idcard.get";
Map<String, String> mapGet = new HashMap<>();
mapGet.put("appkey", "10003");
mapGet.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
mapGet.put("format", "json");
mapGet.put("idcard", "110101199001011114");
HttpxUtils.Get(urlget, mapGet, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_post:
String urlpost = "http://api.k780.com:88/?app=idcard.get";
Map<String, Object> mapPost = new HashMap<>();
mapPost.put("appkey", "10003");
mapPost.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
mapPost.put("format", "json");
mapPost.put("idcard", "110101199001011114");
HttpxUtils.Post(urlpost, mapPost, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_load:
// 图片上传地址
String urlLoad = "";
Map<String, Object> mapLoad = new HashMap<>();
// 传入自己的相应参数
// map.put(key, value);
// map.put(key, value);
HttpxUtils.UpLoadFile(urlLoad, mapLoad, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_down:
// 文件下载地址
String urlDown = "";
// 文件保存在本地的路径
String filepath = "";
HttpxUtils.DownLoadFile(urlDown, filepath, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_get_xml:
String url = "http://flash.weather.com.cn/wmaps/xml/china.xml";
HttpxUtils.Get(url, null, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(new StringReader(arg0));
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
String nodeName = xmlPullParser.getName();
if ("city".equals(nodeName)) {
String pName = xmlPullParser.getAttributeValue(0);
Toast.makeText(getApplicationContext(), pName, Toast.LENGTH_SHORT).show();
}
break;
}
eventType = xmlPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
break;
}
}
}
HttpxUtils.java类:
/**
* @Title 封装xUtils网络请求
* @Authour zhoujp
* @Time 2016年7月27日 下午3:25:21
*
*/
public class HttpxUtils {
/**
* 发送get请求
*
* @param <T>
*/
public static <T> Cancelable Get(String url, Map<String, String> map, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
if (null != map) {
for (Map.Entry<String, String> entry : map.entrySet()) {
params.addQueryStringParameter(entry.getKey(), entry.getValue());
}
}
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 发送post请求
*
* @param <T>
*/
public static <T> Cancelable Post(String url, Map<String, Object> map, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
if (null != map) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
params.addParameter(entry.getKey(), entry.getValue());
}
}
Cancelable cancelable = x.http().post(params, callback);
return cancelable;
}
/**
* 上传文件
*
* @param <T>
*/
public static <T> Cancelable UpLoadFile(String url, Map<String, Object> map, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
if (null != map) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
params.addParameter(entry.getKey(), entry.getValue());
}
}
params.setMultipart(true);
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 下载文件
*
* @param <T>
*/
public static <T> Cancelable DownLoadFile(String url, String filepath, CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
// 设置断点续传
params.setAutoResume(true);
params.setSaveFilePath(filepath);
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
public class JsonResponseParser implements ResponseParser {
// 检查服务器返回的响应头信息
@Override
public void checkResponse(UriRequest request) throws Throwable {
}
/**
* 转换result为resultType类型的对象
*
* @param resultType
* 返回值类型(可能带有泛型信息)
* @param resultClass
* 返回值类型
* @param result
* 字符串数据
* @return
* @throws Throwable
*/
@Override
public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
return new Gson().fromJson(result, resultClass);
}
}
}
简单测试用例:
@ContentView(R.layout.activity_main)
public class MainActivity extends Activity {
@ViewInject(R.id.btn_get)
private Button btn_get;// get请求
@ViewInject(R.id.btn_post)
private Button btn_post;// post请求
@ViewInject(R.id.btn_load)
private Button btn_load;// 上传文件
@ViewInject(R.id.btn_down)
private Button btn_down;// 下载文件
@ViewInject(R.id.btn_get_xml)
private Button btn_get_xml;// 发送get请求(服务器以xml格式返回)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.view().inject(this);// 初始化
}
@Event(value = { R.id.btn_get, R.id.btn_post, R.id.btn_load, R.id.btn_down, R.id.btn_get_xml })
private void getButtonEvent(View v) {
switch (v.getId()) {
case R.id.btn_get:
String urlget = "http://api.k780.com:88/?app=idcard.get";
Map<String, String> mapGet = new HashMap<>();
mapGet.put("appkey", "10003");
mapGet.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
mapGet.put("format", "json");
mapGet.put("idcard", "110101199001011114");
HttpxUtils.Get(urlget, mapGet, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_post:
String urlpost = "http://api.k780.com:88/?app=idcard.get";
Map<String, Object> mapPost = new HashMap<>();
mapPost.put("appkey", "10003");
mapPost.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
mapPost.put("format", "json");
mapPost.put("idcard", "110101199001011114");
HttpxUtils.Post(urlpost, mapPost, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_load:
// 图片上传地址
String urlLoad = "";
Map<String, Object> mapLoad = new HashMap<>();
// 传入自己的相应参数
// map.put(key, value);
// map.put(key, value);
HttpxUtils.UpLoadFile(urlLoad, mapLoad, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_down:
// 文件下载地址
String urlDown = "";
// 文件保存在本地的路径
String filepath = "";
HttpxUtils.DownLoadFile(urlDown, filepath, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
Toast.makeText(getApplicationContext(), arg0, Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.btn_get_xml:
String url = "http://flash.weather.com.cn/wmaps/xml/china.xml";
HttpxUtils.Get(url, null, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
@Override
public void onError(Throwable arg0, boolean arg1) {
}
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(new StringReader(arg0));
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
String nodeName = xmlPullParser.getName();
if ("city".equals(nodeName)) {
String pName = xmlPullParser.getAttributeValue(0);
Toast.makeText(getApplicationContext(), pName, Toast.LENGTH_SHORT).show();
}
break;
}
eventType = xmlPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
break;
}
}
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件