安卓HTTP POST下载管理器

4
在Android中,我有一个URL需要进行POST请求,该请求返回可下载的对象的输入流... 我该如何使用Android Downloadmanager本身或自定义的下载管理器来处理下载过程?

你的目标 API 是什么? - Gaurav Agarwal
最低支持2.3.6,在4.1平板上进行开发,但主要是针对2.3.6。 - jaggy
看看这个链接是否有帮助:https://dev59.com/cnE95IYBdhLWcg3wadKq - Gaurav Agarwal
我不得不编写一个单独的类来手动处理下载和进度条,就像以下链接所示: http://ootooban.com/en/2012/custom-download-manager-for-android-2-1-part2-resumable-downloads/ - jaggy
2个回答

0

0

Android 的下载管理器非常简单:

DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse("http://www.theeUrl.fake/image.png"));
enqueue = dm.enqueue(request);

由于这是一个GET请求,您可以轻松地添加参数。我不知道您是否可以从中发出POST请求。

编辑:要发出POST请求,您可以使用类似以下的HttpClient:

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
HttpResponse response = null;
Dictionary<String, String> postFields = new Dictionary<String, String>();  

// Set the post fields
postFields.add("username","toto")));
postFields.add("password", "thePassword45155")));
post.setEntity(new UrlEncodedFormEntity(postFields, HTTP.UTF_8));

// Execute the POST request
response = client.execute(post);

你应该能够从httpResponse获取一个inputstream来下载文件。 但是你需要自己管理显示/通知/取消操作。


这正是我已经知道的,这就是关键所在,我需要一个POST请求,而不是GET请求。 - jaggy
抱歉,您不能使用下载管理器...我编辑了我的帖子以添加另一种解决方案。 - Guian
我已经做了所有这些事情 :( 我找到了解决方案,基本上我不得不创建自己的通知并手动更新它,而不是自动更新。 - jaggy
是啊...为什么一定要用POST请求呢?你应该将身份验证作为单独的请求进行管理,然后一旦会话打开,就在GET请求中使用会话令牌来下载文件 ;) - Guian
通常情况下,sessionId 会在这种情况下使用,并且可以作为 GET 参数发送,因为它通常具有服务器端的有效超时时间。你明白我的意思吗? - Guian
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接