【问题标题】:How to send WebDAV Headers with Ruby?如何使用 Ruby 发送 WebDAV 标头?
【发布时间】:2016-06-24 17:54:02
【问题描述】:

我正在尝试使用 ruby​​ 2.0 与 Owncloud 服务器 (Sabre/webDAV) 通信。我有一个 Curl 示例,用于获取需要在 HTTP 标头中传递信息的文件列表。如何从 Ruby 传递此标头信息? net_dav docs 似乎表明这是一种可用的方法,但 ruby​​ 错误似乎表明并非如此:

编辑:修复语法错误headers =headers()

undefined method headers= for #<Net::DAV:0x00000001276d10> (NoMethodError)

卷曲命令:

# curl -s -X PROPFIND -H "Depth: 100" -H "Content-Type: application/json" -u ${username}:${passwd} https://myserver.net/remote.php/webdav | egrep href

红宝石代码:

    # get list of files
    url = "https://myserver.net"
    path = "/remote.php/webdav/"

    dav = Net::DAV.new(url, :curl => false)
    dav.verify_server = true
    dav.credentials(user, pass)
    dav.headers ("Depth: 100")  # << something wrong ?

    # get list of files
    path = "/remote.php/webdav/"
    options = ''
    props = dav.propfind(path, options)

【问题讨论】:

  • 深度:100 不是一回事。只能是01infinity
  • 你确定吗?从 0 到 3 改变深度似乎给了我目录结构的逻辑级别。 inifinity 确实是我想要的。谢谢。
  • 如果您与之交互的服务器支持Depth: 3,那么该服务器也实现了非标准功能。参考:我已经完成了 很多 的 webdav 工作,您也可以在规范中找到它;)

标签: ruby webdav owncloud


【解决方案1】:

您链接的文档说使用dav.headers(),您使用的是dav.headers =。也许这就是问题所在?

【讨论】:

  • 好收获。我粘贴的代码是在括号中尝试之后(我是 ruby​​ 的新手:/)。已修复,但仍出现 NoMethodError 错误
【解决方案2】:

最后,我发现 ruby​​gems.org 上的 v0.5 Gem 远远落后于 net_dav github 页面上的 v0.5 代码。 This comment 展示了如何获取更新的 Gem。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 2017-10-29
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多