[RUBY-ON-RAILS] 참고 EOFError : 파일의 마지막 순으로 문제에 도달 : HTTP
RUBY-ON-RAILS참고 EOFError : 파일의 마지막 순으로 문제에 도달 : HTTP
나는 2.3.11 레일 / 루비 1.8.7-P302을 사용하고 있습니다. 나는 링크에 대한 통계를 얻을 수 FQL (페이스 북 API)를 사용하는 것을 시도하고있다. 여기 내 코드는 :
def stats(fb_post_url)
url = BASE_URI + "?query=#{URI.encode("select like_count from link_stat where url=\"#{fb_post_url}\"")}"
parsed_url = URI.parse(url)
http = Net::HTTP.new(parsed_url.host, parsed_url.port)
request = Net::HTTP::Get.new(parsed_url.request_uri)
response = http.request(request)
response.inspect
end
그리고 여기에 오류가있다 :
EOFError: end of file reached
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/protocol.rb:135:in `sysread'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/protocol.rb:135:in `rbuf_fill'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/timeout.rb:67:in `timeout'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/timeout.rb:101:in `timeout'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/protocol.rb:126:in `readline'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/http.rb:2028:in `read_status_line'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/http.rb:2017:in `read_new'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/http.rb:1051:in `request'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/http.rb:1037:in `request'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/http.rb:543:in `start'
from /home/rahul/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/net/http.rb:1035:in `request'
from /home/rahul/Work/Radr/lib/fb_stats.rb:13:in `stats'
from (irb):10
이것은 단지 페이스 북 API의 경우에 발생하는 것으로 보인다. 또한, 나는이 순 :: HTTP에서 버그가 수 수있는 몇 가지 게시물에 제안했다.
해결법
-
==============================
1.URL이 http가 아닌 https를 사용하는 경우, 다음과 같은 라인을 추가해야합니다 :
URL이 http가 아닌 https를 사용하는 경우, 다음과 같은 라인을 추가해야합니다 :
parsed_url = URI.parse(url) http = Net::HTTP.new(parsed_url.host, parsed_url.port) http.use_ssl = true
추가 http.use_ssl 사실 =합니다.
그리고 HTTP와 HTTPS를 모두 처리하는 것이 더 적절한 코드는 다음과 유사한 것이다.
url = URI.parse(domain) req = Net::HTTP::Post.new(url.request_uri) req.set_form_data({'name'=>'Sur Max', 'email'=>'some@email.com'}) http = Net::HTTP.new(url.host, url.port) http.use_ssl = (url.scheme == "https") response = http.request(req)
더 내 블로그를 참조하십시오 : 참고 EOFError를 : 인터넷 : HTTP와 양식을 게시 할 때 파일의 마지막 문제를했다.
-
==============================
2.나는 비 SSL 서비스에 대한 요청과 비슷한 문제가 있었다.
나는 비 SSL 서비스에 대한 요청과 비슷한 문제가 있었다.
http://www.loudthinking.org/2010/02/ruby-eoferror-end-of-file-reached.html : 막연 제안이 블로그는 URI가 '수'에 전달되는 URL을 인코딩 시도
나는 절망에 따라, 그것은에서 촬영을했다, 나의이 테스트 제한하는이 나를 위해 그것을 해결 한 것으로 보인다. 나의 새로운 코드는 다음과 같습니다
@http = Net::HTTP.new('domain.com') @http = @http.start url = 'http://domain.com/requested_url?blah=blah&etc=1' req = Net::HTTP::Get.new(URI.encode(url)) req.basic_auth USERNAME, API_KEY res = @http.request(req)
참고 내가 여러 요청을 통해 HTTP 세션을 유지하기 위해 원하는대로 내가 @ http.start를 사용하는 것이. URI.encode (URL) 가져 오기 호출 내부 : 그 이외에, 당신은 대부분의 관련 부분을 시도하는 것 같아서
-
==============================
3.나는 정기적으로 인터넷 : HTTP와 같은 인터넷 : FTP 문제로 실행하는 것을 발견하고, 내가 할 때) 타임 아웃 (와 통화를 둘러싼 그 모든 문제가 사라질 수 있습니다. 그래서 가끔 삼분 정도 멈춘 곳 다음에서 EOFError 인상 :
나는 정기적으로 인터넷 : HTTP와 같은 인터넷 : FTP 문제로 실행하는 것을 발견하고, 내가 할 때) 타임 아웃 (와 통화를 둘러싼 그 모든 문제가 사라질 수 있습니다. 그래서 가끔 삼분 정도 멈춘 곳 다음에서 EOFError 인상 :
res = Net::HTTP.post_form(uri, args)
이것은 항상 나를 위해 그것을 해결합니다
res = timeout(120) { Net::HTTP.post_form(uri, args) }
-
==============================
4.저도 같은 문제, 루비 1.8.7-p357가 있고, 헛된 것들의 부하를 시도 ...
저도 같은 문제, 루비 1.8.7-p357가 있고, 헛된 것들의 부하를 시도 ...
나는 마침내 같은 XMLRPC :: 클라이언트 인스턴스를 사용하여 여러 통화에만 일어나는 것을 깨달았다!
그래서 지금은 각각의 호출에 나의 클라이언트를 다시 인스턴스화하고있어 그냥 작동 : |
-
==============================
5.NET을 사용 : HTTP - 몇 가지 조사를 수행 한 후,이 루비의 XMLRPC :: 클라이언트 라이브러리에서 발생했다. 클라이언트는 미래의 요청에 대한 연결을 계속 열어 NET : HTTP의 시작 () 메소드를 사용합니다.
NET을 사용 : HTTP - 몇 가지 조사를 수행 한 후,이 루비의 XMLRPC :: 클라이언트 라이브러리에서 발생했다. 클라이언트는 미래의 요청에 대한 연결을 계속 열어 NET : HTTP의 시작 () 메소드를 사용합니다.
여기 내 가정이 서버 그것의 타격은 그 시간 이후 요청을 닫는 것입니다 - 그래서이 마지막 요청 후 30 초 정밀하게 일어났다. 나는 확실하지 기본값은 NET : HTTP 개방 요청을 유지하기 위해 무엇을 해요 -하지만 60초와 테스트가 해결되면 문제를보고에 대해 난.
-
==============================
6.나는 최근에 우연히 결국 이것은 우리가 타격 된 엔드 포인트에서 네트워크 타임 아웃에 의해 발생 된 것으로 나타났다. 다행히 우리를 위해 우리는 시간 제한 기간을 증가 할 수 있었다.
나는 최근에 우연히 결국 이것은 우리가 타격 된 엔드 포인트에서 네트워크 타임 아웃에 의해 발생 된 것으로 나타났다. 다행히 우리를 위해 우리는 시간 제한 기간을 증가 할 수 있었다.
이 (사실이 아닌 순 HTTP에 문제가) 우리의 문제였다 확인하려면 나는 컬 같은 요청을하고 요청이 종료되는 것을 확인했다.
-
==============================
7.루비 레일 I에이 코드를 사용, 그것은 완벽하게 작동합니다 :
루비 레일 I에이 코드를 사용, 그것은 완벽하게 작동합니다 :
req_profilepic = ActiveSupport::JSON.decode(open(URI.encode("https://graph.facebook.com/me/?fields=picture&type=large&access_token=#{fb_access_token}"))) profilepic_url = req_profilepic['picture']
from https://stackoverflow.com/questions/5244887/eoferror-end-of-file-reached-issue-with-nethttp by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] JSON 대신 YAML을 사용하여 액티브의 직렬화 (0) | 2020.02.23 |
---|---|
[RUBY-ON-RAILS] 자기를 사용하십시오. 여부 .. 레일에 (0) | 2020.02.23 |
[RUBY-ON-RAILS] 레일 LINK_TO 루비 의해 매개 변수를 전달 (0) | 2020.02.22 |
[RUBY-ON-RAILS] 대한없이 SimpleForm (비 모델 양식) (0) | 2020.02.22 |
[RUBY-ON-RAILS] 어떻게 프록시 뒤에 들러 사용 하는가? (0) | 2020.02.22 |