1

RubyでこのPOSTリクエストを作成しようとしています。しかし、 #<Net::HTTPUnsupportedMediaType:0x007f94d396bb98>私が試したことは次のとおりです。

require 'rubygems'
require 'net/http'
require 'uri'
require 'json'

auto_index_nodes =URI('http://localhost:7474/db/data/index/node/')

request_nodes = Net::HTTP::Post.new(auto_index_nodes.request_uri)
http = Net::HTTP.new(auto_index_nodes.host, auto_index_nodes.port)

request_nodes.add_field("Accept", "application/json")

request_nodes.set_form_data({"name"=>"node_auto_index",
                            "config" => {
                            "type" => "fulltext",
                            "provider" =>"lucene"} ,
                            "Content-Type" => "application/json"
                            })


response = http.request(request_nodes)

この部分を書き込もうとしました:

"config" => {
             "type" => "fulltext",
             provider" =>"lucene"} ,
             "Content-Type" => "application/json"
            }

そのように:

"config" => '{
              "type" => "fulltext",\
              "provider" =>"lucene"},\
              "Content-Type" => "application/json"\
              }'

この試みも役に立ちませんでした:

request_nodes.set_form_data({"name"=>"node_auto_index",
                            "config" => '{ \
                            "type" : "fulltext",\
                            "provider" : "lucene"}' ,
                            "Content-Type" => "application/json"
                            })
4

1 に答える 1

4

これを試して:

require 'rubygems'
require "net/http"
require "uri"
require "json"

uri = URI.parse("http://localhost:7474/db/data/index/node/")

req = Net::HTTP::Post.new(uri.request_uri)
req['Content-Type'] = 'application/json'
req['Accept'] = 'application/json'

req.body = {
  "name" => "node_auto_index",
  "config" => { "type" => "fulltext", "provider" => "lucene" },
}.to_json    

res = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(req)
end

API ドキュメントと Net::HTTP の簡単な紹介を次に示します。

Content-TypeとはAcceptヘッダーなので、本文ではなくヘッダーとして送信する必要があります。JSON コンテンツはリクエスト本文に入れる必要がありますが、ハッシュを JSON に変換する必要があり、名前と値のペアのフォーム データとして送信しないでください。

于 2012-12-07T11:01:52.507 に答える