【问题标题】:http post with ant for file uploading用于文件上传的 ant 的 http post
【发布时间】:2010-03-31 18:55:32
【问题描述】:

作为我的 Ant 构建过程的一部分,我想通过 HTTP Post 将文件上传到网络服务器。 Ant 只附带一个 HTTP Get 任务。但是,Ant Contrib 似乎有一个 HTTP Post 任务。问题是它没有任何基本身份验证(如 get 那样)或任何指定文件上传的方式(尽管文档说,“rawFile”不是发行版的一部分)。

我的问题是:Ant Contrib 的 Post 任务是否真的支持我想要的,但是以一种不明显的方式(也许我必须手动完成)?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: ant


    【解决方案1】:

    我创建了一个 Apache 2.0 许可、功能齐全且易于使用的 ant http 任务。它使用代码 java.net.* 类,并且没有第三方库依赖项。

    它可以对文件或内联实体进行 POST/PUT,并具有灵活的选项来设置所需的标头、身份验证和状态代码检查以防止意外结果的构建失败。

    http://missinglinkcode.wordpress.com/2011/03/15/apache-ant-http-task/

    【讨论】:

    • 哎呀,亚历克斯> 刚刚看到你在我上面发布了我对缺失链接的提示后,希望你不介意 ;-)
    • PDF 中<entity> 的示例用</query> 关闭<http> 标签。只是觉得你应该知道。不过感谢您的任务。现在试试看! :)
    • 可以命名实体吗?我正在尝试完成类似的事情:curl -u username -X PUT -F file=@/path/to/file.zip https://some/api/foo/42。目前我收到 500 错误,我认为这是因为实体未命名为“文件”,这被列为 API 的要求。有什么建议吗?
    【解决方案2】:

    使用通过 ANT 执行任务调用的 curl 程序。

    对于 curl 示例,请阅读此answer

    【讨论】:

    • 这就是我害怕的。我可以这样做,但这意味着必须安装 curl,这意味着您不能只是将 build.xml 拉出 svn 并期望它能够工作。 :(
    • 我听到你了,让你使用 ANT 插件更加痛苦并不能解决你的问题,除非你也将 3rd 方 jar 提交到 subversion 中:-(
    【解决方案3】:

    一个名为“Missing Link”的新ant http任务已在Ant用户列表上公布,试试吧= http://code.google.com/p/missing-link/

    【讨论】:

    • 缺少链接看起来很完美!会试试的。
    【解决方案4】:

    Antelope 中有一个 http post 任务,但它似乎不支持基本身份验证。 :/

    【讨论】:

      【解决方案5】:

      在蚂蚁沙箱here 中还有一个AntLib,它声称可以进行HTTP 获取和发布。但是,它的身份验证也被破坏了。

      【讨论】:

        【解决方案6】:

        我为 ant-contrib 制作了一个补丁,为 post 任务添加了基本身份验证。希望它被包含在后备箱中。同时,您可以从源代码构建它并自己应用补丁:

        http://sourceforge.net/tracker/?func=detail&aid=3110414&group_id=36177&atid=416922

        安装新的 ant-contrib.jar 后,只需将用户名和密码属性添加到 post 任务,它应该可以正常工作。文件上传中,我不知道...

        【讨论】:

          【解决方案7】:

          有一堆基于 jakarta commons http 客户端的 ant 任务:

          http://fikin-ant-tasks.sourceforge.net/

          还提供带有身份验证的 http post 任务。

          当使用带有 exec 的 ant 时,您将在 java vm 之外打开一个新进程。 如果可能,应避免 IMO 外部流程。

          附: : 如果 fikin ant 任务 / 带有基本身份验证的 http post 被破坏 我更喜欢用 jakarta commons 编写一个 java 类甚至我自己的任务,请参阅 jakarta commons http client , sample for basic authentication 2

          因此它可以在与 ant 相同的 vm 中运行,也可以在分叉的 java 进程中运行
          您会发现几个通过 google 使用 jakarta commons httpclient 上传文件的示例。

          【讨论】:

          • 我同意使用 ant exec 是丑陋的,我更愿意使用纯 java。但是,对于基本身份验证,fikin ant 任务被破坏。
          • fikin 的 httpmpost 任务似乎无法在多线程模式下工作。例如:threadCount=5 in for task
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多