0

net::http を使用して投稿リクエストを実行しようとしています。

net:http を使用した私のリクエストは、次のエラーで失敗します:

respnose_body,code: ["{\"message\":\"Validation Failed\",\"errors\":{\"direction\":[\"invalid\"]}}",
   "422"]]

端末で curl を使用すると、私のリクエストは正常に機能します。

curl https://$$.com/$$ \
>     -u usr:Pssd! \
>     -X POST \
>     -H 'Accept: application/json' \
>     -H 'Content-Type: application/json' \
>     -d '{"body":"my body"}'

ただし、同じリクエストを、 nett:http を使用して実行しようとしています

 http_headers => {"Accept" => "application/json", "Content-Type" => "application/json"}

 uri=URI.parse(url)
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
      request = Net::HTTP::Post.new(uri.request_uri)
      http_headers.each{|key,value| request.add_field(key,value)}
      request.body = form_data  
      response=http.request(request)

The form_data is passed as a json using hash.to_json . 

これで、同じ NET:HTTP コードが、まったく同じように実行される別のポスト リクエスト (別の uri の) に対して機能します。

このサービスは、データが json として送受信されることを想定しています。

これをデバッグするための提案。

ありがとう!

更新: ヘッダーを設定する方法を追加しました

4

1 に答える 1