最近在搞 Rails,碰到一个很蛋疼的问题。
我想模拟发送http请求。
require 'net/http'
class TeamController < ApplicationController
def test
_uri='http://v.youku.com/player/getPlayList/VideoIDS/XNjQyNjg3ODg0_ev_5'
render text: Net::HTTP.get(URI(_uri))
end
end
但是运行后我就得到了这个错误:
wrong status line: "TTP/1.1 302 Found"
但是如果我新建一个 ruby 文件,相同的代码,在本地运行后就能得到返回值。说明这个错误和Rails有关。
然后我又把这个 url 换成其他的,结果有些url是能够正确得到返回值的。所以我猜测在Rails中发送某些请求是不成功的。
然后我在 Aspx 中发送了一个 web 请求到相同的地址,结果仍然可以得到。
事实上我们把这个 url 直接用浏览器打开:http://v.youku.com/player/getPlayList/VideoIDS/XNjQyNjg3ODg0_ev_5 也是能看到返回值的。
所以我就不解了,为什么 唯独在Rails中发送请求错误呢?
拿 Fiddler 抓下包,看看两个包的异同。
谢谢,用 Fiddler 试过了还是不行。但是我发现另外一个问题就是,同样的包含这段代码的一个 ruby 文件在windows环境下就能返回值,但是我把这个文件放到我的 Ubuntu虚拟机上去执行,发现报同样的错了,最终我断定这个是我的ubuntu虚拟机的原因了,不过为什么会出现这个错误呢,请问你知道吗
我找到原因了,原来是因为公司的电脑禁止访问视频网站,而之前因为开发网站我的本机IP被允许访问,但是虚拟机是用桥连的,仍然没被允许访问,所以遇到这个坑爹的错误,sheet,害我找了一上午。