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

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

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

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

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Cisco

シスコ(Cisco Systems,Inc.)は、アメリカ合衆国に本社を置く、世界最大のコンピュータネットワーク機器開発会社及び同社の製品

Q&A

解決済

4回答

1346閲覧

curlした内容をrubyで書き直したい

kozica

総合スコア58

Ruby

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

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Cisco

シスコ(Cisco Systems,Inc.)は、アメリカ合衆国に本社を置く、世界最大のコンピュータネットワーク機器開発会社及び同社の製品

1グッド

1クリップ

投稿2018/11/01 05:30

編集2018/11/01 06:48

curlで実行した内容をrubyに書き直したいのですが、
当方まだプログラミング歴が浅く、わかりまりません。
getリクエストを投げるのですが、行き詰まってます。

どうかご教授お願いします
curlは下記コマンドです。

$ curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -H 'Content-Type: application/json' -X GET 'https://api.meraki.com/api/v0/organizations'

ruby

1#mrk.rb 2require 'net/http' 3require 'uri' 4 5 uri = URI.parse('https://api.meraki.com/api/v0/organizations') 6 req = Net::HTTP::Get.new(uri.request_uri) 7 req['X-Cisco-Meraki-API-Key'] = 'key' 8 9 res = Net::HTTP.start(uri.hostname, uri.port) {|http| 10 http.request(req) 11 } 12 13 puts res.body 14 15$ruby mrk.rb 16何も表示されない 17
DrqYuto👍を押しています

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

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

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

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

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

guest

回答4

0

Ruby を書いたことがないのですが, 以下のコードでどうでしょうか.

気になったことなのですが, キーを正しく指定していないためかわかりませんが
404 のステータスコードが返っていますのでパス自体が存在していないのではないでしょうか.
そのため, body の内容が空になっているような気がします.

あと, HTTP と HTTPS の違いについてを詳しく知る必要があると思います.

ruby

1# mrk.rb 2 3require 'net/http' 4require 'net/https' 5require 'uri' 6 7uri = Net::HTTP.new('api.meraki.com', 443) 8uri.use_ssl = true 9uri.verify_depth = 5 10 11 12res = uri.start { 13 response = uri.get(path = '/api/v0/organizations', 14 # HTTP ヘッダの指定 15 initheader = { 16 'Content-Type' => 'application/json', 17 'X-Cisco-Meraki-API-Key' => '<key>' 18 }) 19 20 #puts response 21 # ステータスコード 22 puts response.code 23 # レスポンス 24 puts response.body 25}

投稿2018/11/01 07:38

Livenga

総合スコア85

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

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

kozica

2018/11/01 08:33

Livengaさんのコードでも無事に実装できました!! 丁寧に回答して頂きありがとうございます!
guest

0

自己解決

下記内容で解決できました。
httpsだっため、そこの記述をしていないのが大きな原因だったようです。

ruby

1require 'net/http' 2require 'uri' 3require 'openssl' 4 5uri = URI.parse('https://api.meraki.com/api/v0/organizations') 6http = Net::HTTP.new(uri.host, uri.port) 7 8http.use_ssl = true 9http.verify_mode = OpenSSL::SSL::VERIFY_NONE 10 11req = Net::HTTP::Get.new(uri.request_uri) 12req['X-Cisco-Meraki-API-Key'] = 'key' 13req['Content-type'] = 'application/json' 14 15res = http.request(req) 16puts res.code, res.msg 17puts res.body

投稿2018/11/01 08:29

編集2018/11/01 08:36
kozica

総合スコア58

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

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

0

提示されたコードですと

rb

1req['Content-Type:'] = 'application/json'

忘れてますよ

投稿2018/11/01 07:36

asm

総合スコア15147

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

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

kozica

2018/11/01 08:29

仰る通りです!
guest

0

`curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -H 'Content-Type: application/json' -X GET 'https://api.meraki.com/api/v0/organizations'`

こういうことですか?

投稿2018/11/01 05:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kozica

2018/11/01 05:45

はい! わかりづらくて申し訳ありません。
kozica

2018/11/01 06:07

curlをrubyで行いたいです。 自分なりにしてみましたが、400が返ってきます
退会済みユーザー

退会済みユーザー

2018/11/01 06:26

回答の内容じゃできませんでしたか?
kozica

2018/11/01 06:27

あ、いえそれをrubyに書き直したいです、、、
退会済みユーザー

退会済みユーザー

2018/11/01 06:29

? すみません、よく意味がわからないです。 rubyでコマンドを実行したいのではなくて コマンド実行のアルゴリズムをrubyで実装したいということですか?
kozica

2018/11/01 06:31

はい。 文章がわかりずらくすいません。 対象URLにheader追加してgetリクエストを送りたいということです。
退会済みユーザー

退会済みユーザー

2018/11/01 06:40

えっと、何度もすみませんが話が見えないです... > 対象URLにheader追加してgetリクエストを送りたい つまり $ curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -H 'Content-Type: application/json' -X GET 'https://api.meraki.com/api/v0/organizations' をRubyで実行したいってことではなくて?
kozica

2018/11/01 06:47

そのとおりです。 実行したcurlをrubyで実行したいということです。 投稿に記載しているようなrubyで実装したいです。 投稿内容はエラーが出ていますが
退会済みユーザー

退会済みユーザー

2018/11/01 06:49

なるほど、回答の書き方は気に入らないから嫌ということですかね... その他のやり方っていうのにあまり詳しくはないので、他の方にお願いします。
kozica

2018/11/01 06:53

え?? 回答はcurlをコピペしているだけで何も答えになってないですよね? 投稿にあるようにmrk.rbファイルにcurlと同じになるように記述し $ruby mrk.rb で実行するということです。
退会済みユーザー

退会済みユーザー

2018/11/01 06:55

失礼ですが、試してみましたか? rubyは``で囲めばコマンドを実行できるはずです。 試しも調べもしないで文句だけ言うなんて非常に気分が悪いですね。
Livenga

2018/11/01 07:01

Ruby で curl を実行したいのではなく, Ruby で curl と同じ結果を取得したいということですか?
kozica

2018/11/01 08:31

buta_bottiさん 当方の説明が下手すぎて意図を伝えることができず申し訳ありません。 ここまでお付き合い頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問