ruby-on-rails – Redmine / Rails – 发送POST数据时未定义的方
发布时间:2020-12-17 02:06:08 所属栏目:百科 来源:网络整理
导读:Redmine允许用户手动将文件添加到文档中,我的目标是创建一个自动执行此操作的方法. 我在使用Wireshark嗅探时手动添加了一个文件以获取我想在我的方法中重新创建的POST请求以帮助我一点点(我无法发布一些屏幕截图(如果需要),我的声誉太低了). Redmine官方网站
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网站上所解释的,我在标题中指定了内容类型,并在body请求中添加了该文件. 现在我收到以下错误: 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') 无法正确处理. 我相信而不是 request.body = File.new(...) 你应该用 request.body = File.read(...) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |