前回の質問で謎のエラーの原因が分かったのでコードを変更したのですが
分からないところがあるのでお願いします。
前回・・・ リンク内容
前回のを改良したコード
ruby
1require 'net/http' 2require 'uri' 3http = Net::HTTP.new("docs.ruby-lang.org",443) 4http.use_ssl = true 5http.verify_mode = OpenSSL::SSL::VERIFY_NONE 6a = http.send_request("GET","Net=3a=3aHTTP.html") 7a.each do |name,value| 8 puts name + ":" + value 9end
↓
http
1400 2server:nginx/1.10.3 3content-type:text/html 4accept-ranges:bytes, bytes, bytes, bytes 5via:1.1 varnish, 1.1 varnish 6content-length:173 7date:Mon, 22 Jul 2019 14:49:05 GMT 8connection:close 9x-served-by:cache-tyo19938-TYO, cache-hnd18728-HND 10x-cache:MISS, MISS 11x-cache-hits:0, 0 12x-timer:S1563806946.744143,VS0,VE8 13<html> 14<head><title>400 Bad Request</title></head> 15<body bgcolor="white"> 16<center><h1>400 Bad Request</h1></center> 17<hr><center>nginx/1.10.3</center> 18</body> 19</html>
前回とは別のステータスコードが出てきました。
(前回が301、そして今回が400)
ただ前回とは違いリダイレクトが起こっていないと思うのでSSLでの
接続は成功している・・・たぶん
参考書には
400 このレスポンスは、リクエストの構文が間違っていることを表しています。 このエラーが発行された場合、リクエストの内容を見直してから再送信 する必要があります。 また、ブラウザはこれを200OKと同様に扱います。
つまり、SSLは成功しているがどこか構文が間違えているという
ことだと思うのですが何が間違えているのかがわかりません。
わからないのでお願いします。
以下の質問はできたらお願いします。
今回はレスポンスを取得するのに
ruby
1send_request ・・・headメソッドでも可
を使っていますが
前回のコードと同様に
ruby
1get_response
を使う方法はないでしょうか?
get_responseを使おうとすると
リファレンスの通りホスト(ドメイン)を指定する必要が出てきます。
つまり、newとget_responseを組み合わせて使おうとすると
ruby
1require 'net/http' 2require 'uri' 3http = Net::HTTP.new("docs.ruby-lang.org",443) 4http.use_ssl = true 5http.verify_mode = OpenSSL::SSL::VERIFY_NONE 6a = http.get_response("docs.ruby-lang.org","Net=3a=3aHTTP.html",443)←ここ!
とのようにめちゃくちゃな構文になってしまいます。
ここで重要なのはレスポンスを送る前の段階で
ruby
1http = Net::HTTP.new("docs.ruby-lang.org",443) 2http.use_ssl = true
上記を定義しておかなければならないというところです。
ほかにいい方法はありますでしょうか?
助言をお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/22 15:27
2019/07/22 15:31
2019/07/22 15:35