xUtils3使用HttpUrlConnection来发送http请求,可以实现最大2G的大文件上传。
1.首先还是在application中初始化:
x.Ext.init(this);
2.然后使用org.xutils.http包下的RequestParams来构造参数。
params = new RequestParams(url);
params.addBodyParameter("upload", new File(fileName));
3.使用Callback.Cancekable来进行请求回调:
Callback.Cancelable cancelable
= x.http().post(params, new Callback.CommonCallback<ResponseEntity>() {
@Override
public void onSuccess(ResponseEntity result) {
Snackbar.make(view, "上传成功", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Snackbar.make(view, "上传失败", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
其中ResponseEntity为构造的实体对象。代码如下:
@HttpResponse(parser = ResultParser.class)
public class ResponseEntity {
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
类名上的注解用来解析返回值,便于隐藏解析细节。会自动调用ResponseParser来解析服务器的返回值
ResultParser类:
public class ResultParser implements ResponseParser {
@Override
public void checkResponse(UriRequest request) throws Throwable {
}
@Override
public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
ResponseEntity responseEntity = new ResponseEntity();
responseEntity.setResult(result);
//返回ResponseEntity对象
return responseEntity;
}
}
这样就完成了文件的上传。