有没有办法获取进度数据,显示ProgressBar(水平),使用DefaultHttpClient,图像编码为Base64 in params。我也发送了一些其他的参数。类似的东西在iOS中实现。是否有适合Android的锻炼。
修改
HttpRequestBase request;
if(mode == MODE.POST)
request = new HttpPost(((Context) mWeakreReference.get()).getString(R.string.base_url)+ url);
request.setHeader(UrlService.HEADER_API_CONTENT_TYPE_KEY, UrlService.HEADER_API_CONTENT_TYPE_VALUE);
request.setHeader(UrlService.HEADER_DEVICE_ID, Utility.getDeviceId(mWeakreReference.get()));
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
图片和数据整齐张贴。我必须显示进度条,我该如何实现。
答案 0 :(得分:2)
不确定你是否还在寻找答案,但在花了一些时间在线寻找答案后,我建立了自己的小型图书馆: https://github.com/licryle/HTTPPoster
它基于StockOverflow answer,另有article在线发现。
前者使用弃用的类,后者不显示实体。它将整个包装在ASync任务中。
使用:
dependencies
{
compile project(':libs:HTTPPoster')
}
您需要一个类来实现HttpListener
接口,以便您可以收听回调。它在HTTPListener
中有四个回调:
配置ASyncTask&启动它。这是一个快速用法:
HashMap<String, String> mArgs = new HashMap<>();
mArgs.put("lat", "40.712784");
mArgs.put("lon", "-74.005941");
ArrayList<File> aFileList = getMyImageFiles();
HttpConfiguration mConf = new HttpConfiguration(
"http://example.org/HttpPostEndPoint",
mArgs,
aFileList,
this, // If this class implements HttpListener
null, // Boundary for Entities - Optional
15000 // Timeout in ms for the connection operation
10000, // Timeout in ms for the reading operation
);
new HttpPoster().execute(mConf);
希望可以帮助:)感觉也随意提出改进!这是最近的,我在需要的时候扩展它
干杯