标签: net-http

Ruby - net/http - 重定向

我有一个URL,我正在使用HTTP GET将查询传递到页面.最新的味道(in net/http)会发生什么,该脚本不会超出302响应.我尝试了几种不同的解决方案; HTTPClient,net/http,Rest-Client,Patron ......

我需要一种方法来继续到最后一页,以验证页面html上的属性标记.重定向是由于移动用户代理点击重定向到移动视图的页面,因此标题中的移动用户代理.这是我今天的代码:

require 'uri'
require 'net/http'

class Check_Get_Page

    def more_http
        url = URI.parse('my_url')
        req, data = Net::HTTP::Get.new(url.path, {
        'User-Agent' => 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5'
        })
        res = Net::HTTP.start(url.host, url.port) {|http|
        http.request(req)
            }
        cookie = res.response['set-cookie']
        puts 'Body = ' + res.body
        puts 'Message = ' + res.message
        puts 'Code = ' + res.code
        puts "Cookie \n" + cookie
    end

end …
Run Code Online (Sandbox Code Playgroud)

ruby curl httpclient http-headers net-http

36
推荐指数
3
解决办法
3万
查看次数

OpenSSL :: SSL :: SSLError:SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv3读取服务器hello A

下面的代码产生以下错误:OpenSSL :: SSL :: SSLError:SSL_connect SYSCALL返回= 5 errno = 0状态= SSLv3读取服务器问候A

require 'net/https'
uri = URI.parse("https://<server>.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.ssl_version = 'SSLv3'
http.get(uri.request_uri)
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?我尝试了所有其他问题中提到的一切,但仍然没有运气.

  • Ruby 1.9.3p484(2013-11-22修订版43786)[x86_64-darwin13.3.0]
  • OpenSSL 0.9.8y 2013年2月5日

更新我

尝试以下方法:

  • Ruby 2.0.0p353(2013-11-22修订版43784)[x86_64-darwin13.3.0]
  • OpenSSL 1.0.1i 2014年8月6日

更新II

  • 强制ssl_version为:TLSv1_2

仍然没有运气.

更新III

好的,这是最终的代码 - 感谢Steffen(见下面的答案):

require 'net/https'
uri = URI.parse("https://<server>.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.ssl_version = :TLSv1
http.ciphers = ['RC4-SHA']
http.get(uri.request_uri)
Run Code Online (Sandbox Code Playgroud)

我怀疑我的问题与其他人有关,因为它与远程配置错误的服务器有关.

ruby openssl ruby-on-rails net-http

32
推荐指数
1
解决办法
4万
查看次数

如何通过HTTP将图像文件下载到临时文件中?

我已经找到了用于下载图像文件的NET :: HTTP的好例子,我发现了创建临时文件的很好例子.但我不知道如何将这些库一起使用.即,如何在下载二进制文件的代码中创建临时文件?

require 'net/http'

Net::HTTP.start("somedomain.net/") do |http|
    resp = http.get("/flv/sample/sample.flv")
    open("sample.flv", "wb") do |file|
        file.write(resp.body)
    end
end
puts "Done."
Run Code Online (Sandbox Code Playgroud)

ruby uri net-http

24
推荐指数
3
解决办法
2万
查看次数

Ruby的'open-uri'和'Net:HTTP'宝石有什么区别?

看起来这两个宝石都执行非常相似的任务.任何人都可以举例说明一个宝石比另一宝石更有用吗?我没有具体的代码,我更想知道每个gem的一般用例.我知道这是一个简短的问题,我会根据要求填写空白.谢谢.

ruby gem open-uri net-http

20
推荐指数
2
解决办法
6156
查看次数

如何在ruby中设置自定义用户代理

我的任务是通过自动化测试URL上的不同用户代理.我正在使用ruby进行编码,我一直在尝试使用以下方法设置用户代理,但它似乎无法识别用户代理.

@http = Net::HTTP.new(URL)
response = @http.request_get(URL, {'User-Agent' => useragent})  
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点,或者我做错了什么?

ruby user-agent net-http

19
推荐指数
2
解决办法
2万
查看次数

使用net/http发送Post请求

我需要将JSON中的数据发送到在同一台计算机上运行的另一个应用程序.
我这样发送请求(rails 3.2.13)

 data = { //some data hash }
 url = URI.parse('http://localhost:6379/api/plans')
  resp, data = Net::HTTP.post_form(url, data.to_JSON )
  p resp
  p data
  { resp: resp, data: data.to_JSON }
Run Code Online (Sandbox Code Playgroud)

但是我得到了Net::HTTPBadResponse (wrong status line: "-ERR unknown command 'POST'"): 如何解决这个问题?

更新1将
我的代码更新为@ Raja-d建议

  url = URI.parse('http://localhost:6379/v1/sessions')
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  resp, data = Net::HTTP.post_form(url, data)
  p resp
  p data
Run Code Online (Sandbox Code Playgroud)

但我仍然得到错误 Net::HTTPBadResponse (wrong status line: "-ERR unknown command 'POST'"):

ruby post json ruby-on-rails net-http

19
推荐指数
1
解决办法
3万
查看次数

如何在rubys net/http中设置代理?

我正在尝试设置代理并在文档中的简单get请求中使用它.但我总是收到错误!地址和端口是正确的,它是开放的,它工作..它的 http://proxy:8080.

proxy_addr = 'proxy'
proxy_port = 8080

Net::HTTP.new('google.de', nil, proxy_addr, proxy_port).start { |http|
  # always proxy via your.proxy.addr:8080
  Net::HTTP.get('google.de', '')
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢你的回答!

ruby proxy http net-http

16
推荐指数
3
解决办法
2万
查看次数

Ruby未定义的方法`bytesize'用于#<Hash:0x2954fe8>

我有以下Ruby代码,用于沙盒模式的跟踪网站:

require "net/http"
require "net/https"
require "uri"

xml = <<XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><data appname="dhl_entwicklerportal" language-code="de" password="Dhl_123!" request="get-status-for-public-user"><data piece-code="00340433836536550280"></data></data>
XML

uri = URI('https://cig.dhl.de/services/sandbox/rest/sendungsverfolgung')

nhttp = Net::HTTP.new(uri.host, uri.port)
nhttp.use_ssl=true
nhttp.verify_mode=OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri)
request.basic_auth 'xpackageWP', 'hidden'
response = nhttp.start {|http|
http.request(request, xml:xml)
}

puts response.body
Run Code Online (Sandbox Code Playgroud)

我总是得到错误:

d:/Ruby200/lib/ruby/2.0.0/net/http/generic_request.rb:179:in `send_request_with_body' undefined method `bytesize' for #<Hash:0x2954fe8> (NoMethodError)
from d:/Ruby200/lib/ruby/2.0.0/net/http/generic_request.rb:130:in `exec'
from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1404:in `block in transport_request'
from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1403:in `catch'
from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request'
from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1376:in `request'
from D:/Dropbox_5BHIF/Dropbox/TempDHL/Main.rb:17:in `block in <main>'
from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:852:in `start'
from D:/Dropbox_5BHIF/Dropbox/TempDHL/Main.rb:16:in …
Run Code Online (Sandbox Code Playgroud)

ruby net-http

15
推荐指数
1
解决办法
3万
查看次数

Ruby使用命名空间/模块

例如:

require 'net/http'
uri = URI('http://example.com/some_path?query=string')

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri

  response = http.request request # Net::HTTPResponse object
end
Run Code Online (Sandbox Code Playgroud)

什么是正确/擦除方式摆脱Net::HTTP?即HTTP::Get.new()或只是Get.new()

ruby namespaces module class net-http

13
推荐指数
2
解决办法
1万
查看次数

Ruby,Tor和Net :: HTTP :: Proxy

如果这是一个无耻的怀疑我提前道歉:我想在我的Ruby代码中使用代理来获取一些网页.而且我想偷偷摸摸!所以我正在使用Tor.

我有Tor运行,我可以像往常一样使用Net :: HTTP.get(uri).但我无法弄清楚如何使用Net :: HTTP :: Proxy来获取uri.我也无法弄清楚如何使用Tor来帮助我的匿名提取.

任何帮助是极大的赞赏.请不要只为Net :: HTTP :: Proxy添加ruby-doc页面链接.如果我明白了,我不会在这里问这个:-)


另一种简单的方法是使用SOCKSify,但在这种情况下,我收到以下错误:

/usr/lib/ruby/gems/1.9.2-p290/gems/socksify-1.5.0/lib/socksify.rb:189:in 'socks_authenticate': SOCKS version not supported (SOCKSError)

我之前从未做过任何网络编程.任何关于此的指导也将非常有帮助.谢谢 :-)

ruby proxy tor net-http

12
推荐指数
1
解决办法
6914
查看次数