Rails net:http PUT请求 - curl - Tika服务器

时间:2015-12-16 17:54:37

标签: ruby-on-rails curl apache-tika net-http

我设置了一个远程TIKA服务器,我正在尝试在RoR应用程序中使用它。我需要从远程位置提取文件并将其发送到Tika服务器。 TikaJAXRS的wiki给出了一个使用curl的例子,但我无法让它工作。这是什么工作:

curl https://mydomain.s3.amazonaws.com/uploads/testdocument.docx | curl -v -i -X PUT -T - ec2 ... 154.uswest2.compute.amazonaws.com:9998/tika

如何使用net :: http在我的Rails应用程序中呈现此内容?我已经成功地从Rails应用程序向Tika服务器写了一个带有net :: http的GET请求并获得了预期的结果,但PUT上的文档有点稀疏。 (服务器确实需要PUT而不是POST。)

顺便说一句,如果有人知道如何在该wiki工作中制作最后一个例子并在net :: http中呈现它,那就更好了!

附录:

以下是我在RoR应用程序中无法使用的内容:

 ENDPOINT = "http://ec2...154.us-west-2.compute.amazonaws.com:9998"
 file = "https://mydomain.s3.amazonaws.com/uploads/testdocument.docx"
 uri = URI.parse(endpoint)
 @http = Net::HTTP.new(uri.host, uri.port)
 request = Net::HTTP::Put.new("/tika")
 request.body = URI.parse(file).read
 @response = @http.request(request)

我找回了代码415

我需要知道如何更改此代码以执行curl命令(curl remote_file管道以卷曲PUT)正在成功执行的操作。

更新

经过几天毫无结果的尝试,我有一个解决方法:

gem'curb'

 @response = Curl.put("http://ec2...154.us-west-2.compute.amazonaws.com:9998/tika",
                 Curl.get("https://mydomain.s3.amazonaws.com/uploads/testdocument.docx").body_str)

虽然这确实为我的直接问题提供了解决方案,但我仍然想知道如何使用Net :: HTTP更直接地实现相同的功能。

0 个答案:

没有答案