没有content-type

时间:2015-05-14 21:21:36

标签: ruby apache-tika

我试图使用Net :: HTTP :: Put调用Tika server。问题是该调用总是通过Content-Type,这使得Tika无法运行检测器(我想要的),然后由于Content-Type的默认application/x-www-form-urlencoded而窒息。 Tika docs建议不要使用它。

所以,我有以下内容:

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会一直发送。

任何见解都会非常感激,因为我宁愿避免进行多次卷曲调用...有没有办法抑制发送默认标题?

2 个答案:

答案 0 :(得分:1)

如果设置req['Content-Type'] = nil,那么Net :: HTTP会将其设置为默认的' application / x-www-form-urlencoded',但是如果将其设置为空字符串Net :: HTTP不管它:

req['Content-Type'] = ''

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

答案 1 :(得分:1)

如果Content-Typeapplication/octet-stream,Tika似乎会运行探测器。添加

req.content_type = "application/octet-stream"

现在允许我获得结果。