我正在Ruby中编写一个脚本,用于向Adobe CQ CMS发布路径,包含和排除过滤器。我最初在使用请求发布过滤器时遇到问题。所以,我通过POSTMAN运行请求,在成功之后我复制了请求并在我的脚本中使用它。但是,因为它不是正确的做事方式。我正在寻找一些帮助将此POSTMAN请求转换为正确的请求。
这是功能:
def postFilter(postURL,excludeRule,includeRule, auth_code)
url = URI(postURL)
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["content-type"] = "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
request["authorization"] = "Basic YWRtaW46YWRtaW4="
request["cache-control"] = "no-cache"
request.body = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"rules\"\r\n\r\n#{excludeRule}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"rules\"\r\n\r\n#{includeRule}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
response = http.request(request)
end
我还有另一个问题:现在密码是硬编码的(基本YWRtaW46YWRtaW4 =)。我尝试通过将密码作为争论传递给函数来消除这种情况,但它没有用。我无法弄清楚是否存在语义错误或逻辑错误。
提前感谢您的帮助。
答案 0 :(得分:1)
对于身份验证,您可以使用内置basic_auth
方法的Ruby。
替换这个:
request["authorization"] = "Basic YWRtaW46YWRtaW4="
与
request.basic_auth(username, password)
在此处阅读https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html