管理平臺允許用戶在文件手動添加到文檔,我的目標是創建一個自動執行該方法。管理平臺/導軌 - 未定義的方法在發送POST數據
我用Wireshark手動添加了一個文件來獲取POST請求,我想在我的方法中重新創建以幫助我一點點(我不能張貼一些截圖(如果需要),我的聲望是太低)。
管理平臺官方網站提供的信息如何在此附上文件:http://www.redmine.org/projects/redmine/wiki/Rest_api#Attaching-files小時瀏覽網頁和格外的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)
由於在管理平臺介紹網站我在頭文件中指定了內容類型,並在正文請求中添加了文件。
現在我得到以下錯誤:
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'
編輯:
我更新了我的URI具有絕對的URL是這樣的:
uri = URI.parse("http://<server_IP_address>:3000/uploads.js")
現在我發現了以下錯誤:
NoMethodError (undefined method `bytesize' for #<File:/home/testFile.txt>):
您是否在我的方法中看到任何錯誤,或者您是否知道此錯誤來自哪裏?
注:我使用的軌道3.2.16和Ruby 1.9.3-P392
你的URI只是一個文件名。當創建'Net :: HTTP'對象時,你正在調用它的端口。這可能是零,所以HTTP類_clould_無法正確地構建請求時提供的端口是零。 – KappaNossi
請打印'uri.host'和'uri.port'分配'http'之前,如果這些都不是'nil'發佈他們的內容。 – Patru
兩者都是'nil'。我應該自己定義這些變量嗎?我假設端口是80,主機是redmine.org? – Shredator