如何将XML字符串发布到api Ruby Faraday

问题描述 投票:0回答:2

我尝试使用法拉第(Faraday)库用于Ruby,以便为我的API发出下一个发布请求:需要在我的标头中添加API-Key =“ xxxxxxxxxxxxxxx”并在正文中发送XML

<time_entry>
<issue_id>1</issue_id>
<activity_id>9</activity_id>
<hours>1.0</hours>
<comments>Test</comments>
</time_entry>

这对邮递员来说很完美,但是当我使用法拉第库时却不起作用。

我的代码是:

 require 'faraday'
  xml = %&<time_entry><issue_id>1</issue_id><activity_id>9</activity_id><hours>1.0</hours><comments>automatic spent time</comments></time_entry>&


  faraday = Faraday.new do |f|
    f.request :multipart 
    f.request :url_encoded 
    f.adapter :net_http
    f.headers["API-Key"]="xxxxxxxxxxxxxxx"
  end


  payload = {xml: xml}

  faraday.post("http://localhost:3000/time_entries.xml", payload)

我遇到下一个错误:

Completed 422 Unprocessable Entity in 8ms (Views: 0.4ms | ActiveRecord: 2.0ms)
Completed 406 Not Acceptable in 19ms (ActiveRecord: 2.9ms)
ruby-on-rails ruby redmine-api
2个回答
1
投票
[我使用另一种方法-我发送了JSON而不是XML,并使用'net / http'

require "json" require 'net/http' uri = URI("http://localhost:3000/time_entries.xml")


0
投票
问题是您发送的是散列({ :xml => '<time_entry><issue_id>...' }),而不仅仅是有效负载中的XML字符串:
© www.soinside.com 2019 - 2024. All rights reserved.