gpt4 book ai didi

ruby-on-rails - Redmine/Rails - 发送 POST 数据时未定义的方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:53 24 4
gpt4 key购买 nike

Redmine 允许用户手动将文件添加到文档,我的目标是创建一个自动执行此操作的方法。

我在使用 Wireshark 嗅探时手动添加了一个文件,以获取我想在我的方法中重新创建的 POST 请求,以帮助我一点点(我无法发布一些屏幕截图(如果需要),我的声誉太低)。

Redmine 官方网站提供了如何附加文件的信息:http://www.redmine.org/projects/redmine/wiki/Rest_api#Attaching-files

因此,在浏览 Web 和特别是 StackOverflow 和 here 之后, ,最后写了一个方法:

require 'net/http'
require 'uri'

uri = URI.parse("/uploads.js")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' => 'application/octet-stream'})
request.body = File.new("/home/testFile.txt", 'rb')
@response = http.request(request)

如 Redmine 网站上所述,我在 header 中指定了内容类型,并在正文请求中添加了文件。

现在我得到以下错误:

NoMethodError (undefined method `+' for nil:NilClass):
/usr/local/lib/ruby/1.9.1/net/http.rb:1404:in `addr_port'
/usr/local/lib/ruby/1.9.1/net/http.rb:1339:in `begin_transport'
/usr/local/lib/ruby/1.9.1/net/http.rb:1315:in `transport_request'
/usr/local/lib/ruby/1.9.1/net/http.rb:1293:in `request'
rest-client (1.6.7) lib/restclient/net_http_ext.rb:51:in `request'
/usr/local/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
/usr/local/lib/ruby/1.9.1/net/http.rb:745:in `start'
/usr/local/lib/ruby/1.9.1/net/http.rb:1284:in `request'
rest-client (1.6.7) lib/restclient/net_http_ext.rb:51:in `request'
plugins/redmine_reddrop/app/controllers/projectusers_controller.rb:360:in `addFile'

编辑:

我用这样的绝对 URL 更新了我的 uri:

uri = URI.parse("http://<server_IP_address>:3000/uploads.js")

现在我收到以下错误:

NoMethodError (undefined method `bytesize' for #<File:/home/testFile.txt>):

您是否发现我的方法有任何错误,或者您是否知道此错误从何而来?

注意:我使用的是 rails 3.2.16 和 Ruby 1.9.3-p392

最佳答案

据我所知,你不能使用相对 URI,所以你的行

uri = URI.parse('/uploads.js')

无法正确处理。尝试使用绝对 URL!它可能会奏效。

我相信而不是

request.body = File.new(...)

你应该使用

request.body = File.read(...)

关于ruby-on-rails - Redmine/Rails - 发送 POST 数据时未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com