如何使用java程序自动下载文件

时间:2014-03-25 07:08:32

标签: java web-services authentication user-interface

我需要自动从页面下载带有多个链接的文件(可能有超过100个带有单独链接的文件)。我知道登录的URL,我有凭据。

我愿意通过自动化在Java程序中这样做。转到下载位置页面的唯一方法是登录该站点。

cURL命令对此有帮助吗?

请告诉我这样做。

2 个答案:

答案 0 :(得分:1)

您可以使用可以下载日志文件的wget:

wget -r --no-parent --user=user --password=password --no-check-certificate <URL>
  • 您可以在--header中传递标题,例如--header“Cookie:JSONSESSIONID = 3433434343434”
  • 您可以使用--post-data'mail = $ EMAIL&amp; password = $ PASSWRD'
  • 传递帖子数据

或者您可以在java中使用以下HttpClient:

  • 以下是用于登录和传递POST / GET /标头信息的HTTPClient的示例
  • 首先将整个HTML页面作为String
  • 解析String以获取文件的链接或使用XML转换为java对象使用像https://github.com/FasterXML/jackson-dataformat-xml这样的对象映射器
  • 获取文件链接后,使用HttpClient
  • 下载文件
public void saveFile(String url, String FileName) throws ClientProtocolException, IOException{
            HttpGet httpget = new HttpGet(url);
            HttpResponse response = httpClient.execute(httpget);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                long len = entity.getContentLength();
                InputStream is = entity.getContent();
                FileOutputStream fos = new FileOutputStream(new File(filePath)));
                IOUtils.copy(is, fos);
            }
            return;
        }

答案 1 :(得分:0)

如果您要将文件从站点复制到本地文件,则可以使用java.nio.file

Files.copy(new URL("http://host/site/filename").openStream(), Paths.get(localfile)