您的位置:首页 > 理论基础 > 计算机网络

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;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息