1

Stanford ecorner XML を読み込もうとしています:

open("http://ecorner.stanford.edu/RecentlyAdded.xml")

しかし、次のエラーメッセージが表示されます:

OpenURI::HTTPError: 500 Internal Server Error
    from /usr/local/lib/ruby/1.8/open-uri.rb:277:in `open_http'
    from /usr/local/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
    from /usr/local/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
    from /usr/local/lib/ruby/1.8/open-uri.rb:162:in `catch'
    from /usr/local/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
    from /usr/local/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
    from /usr/local/lib/ruby/1.8/open-uri.rb:518:in `open'
    from /usr/local/lib/ruby/1.8/open-uri.rb:30:in `open'
    from (irb):65
    from :0

信じていますが、間違っている可能性もあります。フィードを使用するにはログインする必要があるからです。

私が使用できる回避策はありますか?

4

2 に答える 2

2

ログインしていない場合は、 HTTP 応答コードの401 Unauthorizedand notを取得する必要があります500。ブラウザーでサイトを開こうとしましたが、動作します。Web サーバーはユーザー エージェントの欠落を好まないことが判明したため、それを追加すると次のように機能しopen-uriます。

>> require 'open-uri' 
#=> true
>> open("http://ecorner.stanford.edu/RecentlyAdded.xml", 'User-Agent' => 'ruby') 
#=> #<File:/var/folders/H9/H9qnar1yGZqBrWFGuTE0RU+++TI/-Tmp-/open-uri20110505-25566-zsc3pd-0>
于 2011-05-05T08:25:58.847 に答える
0

これは私のために働いています:

require 'open-uri'
require 'nokogiri'

doc = Nokogiri::XML(open('http://ecorner.stanford.edu/RecentlyAdded.xml'))
puts doc.search('title').map{ |n| n.text }

>> Recently Added STVP Entrepreneurship Corner Materials
>> STVP Entrepreneurship Corner
>> Podcast: Developing Products that Save Lives - Richard Scheller (Genentech)
>> Podcast: How to Build Instant Connections - Ori Brafman (Author)
>> Podcast: A New Vision for Capital Markets - Barry Silbert (SecondMarket)
>> Podcast: Effective Models for Sustainable Growth - Jennifer Morris (Conservation International)

500 の範囲のエラーが発生したことに注意してください。これは、サーバーが動作していないことを意味しますが、問題を認めるのに十分機能しています. 400 レンジのエラーが発生した場合、なんらかの理由でコンテンツへのアクセスが拒否されている可能性があるため、問題は認証またはあなたの側にあるとは思えません。

于 2011-05-05T08:37:30.777 に答える