【问题标题】:Writing to Jira6 API via Ruby (error 415)通过 Ruby 写入 Jira6 API(错误 415)
【发布时间】:2014-01-15 17:50:44
【问题描述】:

我对红宝石很陌生。老实说,这是我第一次尝试使用 http 连接编写 ruby​​ 脚本。我一度迷失了方向。通过 POST 向 Jira6 发送数据。这是我使用的代码

# If issues_id.count != 0 make a transition of the issues
if issue_id.count > 0
    issue_id.each do |id|
        transition_data = '{"transition": {"id": "666"}}'

        Net::HTTP.start(jira_domain, jira_port) do |http|
            ap jira_transition + id + jira_transition_query
            request = Net::HTTP::Post.new(jira_transition + id + jira_transition_query)
            request.basic_auth jira_user, jira_pass
            request["Content-Type"] = "application/json"
            ap transition_data
            request.set_form_data('data' => '{"transition": {"id": "841"}}');

            response = http.request(request)

            ap response.code
            ap response
        end
    end
end

对此进行测试会导致以下错误:

#<Net::HTTPUnsupportedMediaType 415 Unsupported Media Type readbody=true> error.

当我尝试使用 curl 时,效果很好

curl -D- -u external_user:external_pass -X POST --data '{"transition": {"id": "841"}}' -H "Content-Type: application/json" http://jira.demo.com:80/rest/api/2/issue/17399/transitions\?expand\=transitions.fields

只是为了确保我不会像在 google 群组上那样得到相同的废话答案: 是的,我在成功尝试后重置了问题:-) 是的,transitionId 841 是正确的:-)

有人可以向我发送正确的方向如何将数据发送到 Jira6 REST-API 吗?我认为这是一个边际错误,但我不承认。 非常非常感谢你。

【问题讨论】:

    标签: ruby api http rest jira


    【解决方案1】:

    我建议你试试jira-ruby gem

    【讨论】:

    • jira-ruby gem 坏了。每次我尝试这个时,我都会收到一些源自捆绑包的编译错误。
    • 编译错误并不一定意味着 gem 坏了。我用过是成功的。也许发布一些错误以进行故障排除。
    【解决方案2】:

    我遇到了同样的问题。出于某种原因,您不能使用 'request["Content-Type"] = "application/json"'。您必须创建一个新的标头变量,然后将其作为第二个参数传递给 Post.new。然后使用 request.body 包含更新参数。

    if issue_id.count > 0
        issue_id.each do |id|
            transition_data = '{"transition": {"id": "666"}}'
    
            Net::HTTP.start(jira_domain, jira_port) do |http|
                ap jira_transition + id + jira_transition_query
                header = {'Content-Type': 'application/json'}
                request = Net::HTTP::Post.new(jira_transition + id + jira_transition_query, header)
                request.basic_auth jira_user, jira_pass
                #request["Content-Type"] = "application/json"
                ap transition_data
                #request.set_form_data('data' => '{"transition": {"id": "841"}}');
                params = {transistion: {id: 841}}
                request.body = params.to_json
    
                response = http.request(request)
    
                ap response.code
                ap response
            end
        end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-29
      • 2019-09-03
      • 2018-01-06
      • 2013-01-11
      • 1970-01-01
      • 2023-03-15
      • 2015-02-19
      • 2015-09-14
      相关资源
      最近更新 更多