2017-10-18 114 views
0

假设我的文件名是test.rbRuby如何使用argv在命令行中传递url?

我想用argv[0]访问的第一个参数和argv[1]访问的第二个参数在我的代码传递的URL在命令行中,这样的事情:

ruby test.rb http://www.www.youtypeitwepostit.com /messages 

test.rb文件包含:

require 'net/http' 
uri = URI.parse('http://www.youtypeitwepostit.com') 
http=Net::HTTP.new(uri.host,uri.port) 
request = Net::HTTP::Get.new("/") 
reply=http.request(request) 
puts "#{reply.code} #{reply.message}" 
reply.header.each_header {|key,value| puts "#{key} 
= #{value}" } 
puts "#{reply.body}" 

PLE这个教我如何做到这一点。

由于

+0

作为一个整体传递URL是否更有意义? – Stefan

+0

这不是一个足够精确的错误描述,可以帮助我们。 *什么*不起作用? *如何*不起作用?你的代码有什么问题?你有错误信息吗?什么是错误信息?你得到的结果不是你期待的结果吗?你期望得到什么结果?为什么?你得到的结果是什么?两者有什么不同?你所观察到的行为不是所期望的行为?什么是期望的行为,为什么,观察到的行为是什么,以及它们以何种方式不同? –

+0

你能提供一个你想要发生什么的*精确*规范,包括任何和所有的规则,这些规则的异常,角落案例,特殊情况,边界案例和边缘案例?您是否可以提供示例输入和输出,以显示您在正常情况下以及所有例外情况,角落情况,特殊情况,边界情况和边缘情况下预期会发生的情况? –

回答

0
require 'net/http' 
uri = URI.parse(ARGV[0]) 
http=Net::HTTP.new(uri.host,uri.port) 
request = Net::HTTP::Get.new(ARGV[1]) 
reply=http.request(request) 
puts "#{reply.code} #{reply.message}" 
reply.header.each_header {|key,value| puts "#{key} 
= #{value}" } 
puts "#{reply.body}" 

然后只是调用它:

红宝石test.rb http://www.youtypeitwepostit.com /消息

+0

感谢您的帮助 –

0

利用该命令行中,该URL是第一参数。

可以通过访问使用它ARGV [0],

例如

uri = URI.parse(ARG[0])