不带内容类型的ruby和net/http请求

不带内容类型的ruby和net/http请求,ruby,apache-tika,Ruby,Apache Tika,我正在尝试使用Net::HTTP::Put调用。问题是调用总是通过内容类型,这会阻止Tika运行检测器(我想要),然后由于应用程序/x-www-form-urlencoded的默认内容类型而阻塞。建议不要用那个 因此,我有以下几点: require 'net/http' port = 9998 host = "localhost" path = "/meta" req = Net::HTTP::Put.new(path) req.body_stream = File.open(file_nam

我正在尝试使用Net::HTTP::Put调用。问题是调用总是通过
内容类型
,这会阻止Tika运行检测器(我想要),然后由于
应用程序/x-www-form-urlencoded
的默认
内容类型
而阻塞。建议不要用那个

因此,我有以下几点:

require 'net/http'
port = 9998
host = "localhost"
path = "/meta"

req = Net::HTTP::Put.new(path)
req.body_stream = File.open(file_name)
req['Transfer-Encoding'] = 'chunked'
req['Accept'] = 'application/json'
response = Net::HTTP.new(host, port).start { |http|
    http.request(req)
}
我尝试添加
req.delete('content-type')
并以各种方式设置
initheaders={}
,但是默认的
content-type
一直被发送


任何见解都将不胜感激,因为我宁愿避免多次调用curl。。。是否有任何方法禁止发送该默认标头?

如果设置
req['Content-Type']=nil
,则Net::HTTP将其设置为默认值'application/x-www-form-urlencoded',但如果将其设置为空字符串Net::HTTP将其保留:

req['Content-Type'] = ''

Tika应将其视为无效类型并启用检测器。

如果
内容类型
应用程序/八位字节流
,Tika似乎将运行检测器。添加

req.content_type = "application/octet-stream"

现在允许我获得结果。

是的,我尝试过,但tika随后将内容类型视为
*/*
,并在未知类型上阻塞。