设置参数和cookie的Ruby Curb(Curl)问题

时间:2012-04-03 03:08:09

标签: ruby curb

我有一系列相当大的条目数组,我想发布到远程Jira实例的自定义字段中,所以我试图在Ruby下使用Curb(因为他们的API不允许它,在SQL下它有点危险的munge) 我对其他建议持开放态度,但我不能为我的生活解决如何使用我的初始获取请求设置我的cookie,然后为帖子提供参数和相应的标题

c = Curl::Easy.new("http://jira/secure/Dashboard.jspa")
c.verbose = true
c.http_auth_types = :basic
c.username = 'user'
c.password = 'pass'
c.perform
c.headers="X-Atlassian-Token: no-check"
params=    {:fieldConfigId=>'13499',:selectedParentOptionId=>'',:addSelectValue=>'true',:os_username=>'user',:os_password=>'pass',:addValue=>'Barry the Badger',:add=>'Add'}
url="http://jira/secure/admin/EditCustomFieldOptions!add.jspa"
c.http_post(url,params)
c.perform

看起来它仍在使用相同的网址 我已经尝试过使用rest_client,但这似乎与cookie行为不端,我确实需要为atlassian令牌设置上面的标题(因此它不会请求用户名/密码) 有没有人有任何想法 - 或建议有什么更好的机制可以做到这一点 - 或者更好 - 我做错了什么;) 干杯 斯科特

1 个答案:

答案 0 :(得分:1)

对它进行排序 移动了一切,并且必须明确设置enable_cookies(这有点疯狂)

c = Curl::Easy.new
#set first url
c.url = dashboard
#c.verbose = true
c.http_auth_types = :basic
c.username = username
c.password = password
c.enable_cookies = true
c.headers="X-Atlassian-Token: no-check"
#perform login to first link
c.perform
#puts c.cookies
#prepare url to access websudo
c.url=websudo
c.verbose = true
#set password for websudo form
params={:webSudoPassword=>password}.to_query
#set post
c.http_post(c.url,params)
#prepare all variables for creating new custom field option
params={:fieldConfigId=>cf_config:selectedParentOptionId=>'',:addSelectValue=>'true',:os_username=>username,:os_password=>password,:addValue=>cf_value,:add=>'Add'}.to_query
c.url=addoption
c.verbose = true
c.http_post(c.url,params)

立即处理,并遵循Pass GET parameters with Ruby Curb的建议并使用ActiveSupport to_query