質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

449閲覧

APIのパラメータ入力方法がわからない

zentsu

総合スコア14

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/02/05 07:51

前提・実現したいこと

QUOINEXという仮想通貨取引所で注文できるようにしたいです。
以下のサイトのサンプルコードを参考にしたのですが、
POSTのパラメータをどのように組み込めばいいのかわからず実現できません。

参考サイト
https://developers.quoine.com/#create-an-order

発生している問題・エラーメッセージ

以下の関数を実行しても、注文が登録されません。

該当のソースコード

Ruby

1require 'net/http' 2require 'uri' 3require 'json' 4require './key' 5require 'openssl' 6require 'time' 7require 'jwt' 8 9def qx_order 10 uri = URI.parse("https://api.quoine.com") 11 http = Net::HTTP.new(uri.host, uri.port) 12 http.use_ssl = true 13 14 token_id = QX_API_KEY(実際には入力されています) 15 user_secret = QX_API_SECRET(実際には入力されています) 16 path = '/orders/' 17 18 auth_payload = { 19 path: path, 20 nonce: DateTime.now.strftime('%Q'), 21 token_id: token_id 22 } 23 24 body = { 25 "order": { 26 "order_type": "limit", 27 "product_id": 29, 28 "side": "sell", 29 "quantity": "0.01", 30 "price": "200000" 31 } 32 } 33 34 signature = JWT.encode(auth_payload, user_secret, 'HS256') 35 36 request = Net::HTTP::Get.new(path) 37 request.add_field('X-Quoine-API-Version', '2') 38 request.add_field('X-Quoine-Auth', signature) 39 request.add_field('Content-Type', 'application/json') 40 request.body = body 41 42 puts response = http.request(request) 43end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/02/05 09:02

response には、なにが帰ってきているのでしょうか?
zentsu

2018/02/05 09:14 編集

現状ではレスポンスが返って来ず以下のエラーが出力されます /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http/generic_request.rb:183:in `send_request_with_body': undefined method `bytesize' for #<Hash:0x000000025f0b48> (NoMethodError) from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http/generic_request.rb:121:in `exec' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:1444:in `block in transport_request' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:1443:in `catch' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:1443:in `transport_request' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:1416:in `request' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:1409:in `block in request' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:877:in `start' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/net/http.rb:1407:in `request' from /home/ec2-user/environment/method.rb:129:in `qx_order' from /home/ec2-user/environment/bitcoin.rb:77:in `<main>'
guest

回答1

0

body を json型にしてあげれていない点と、注文はGETではなくPOSTなので

エラーが出ている気がします。

よって

request = Net::HTTP::Get.new(path)

request.add_field('X-Quoine-API-Version', '2')
request.add_field('X-Quoine-Auth', signature)
request.add_field('Content-Type', 'application/json')
request.body = body

の部分を

request = Net::HTTP::Post.new(path)  #←ここがGETからPOST request.add_field('X-Quoine-API-Version', '2') request.add_field('X-Quoine-Auth', signature) request.add_field('Content-Type', 'application/json') request.body = body.to_json #←ここをjson型にしてあげて

とやってあげれば注文流れると思いますよ!

あと、一応

product_id,29

は理解している上でやっているんだとは思われますが、

その点も参考サイトを参考にがんばってみてください。

投稿2018/02/11 11:05

no9asia

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問