Почему я вижу эту ошибку: Ruby SocketError: не удалось открыть TCP-соединение - PullRequest
0 голосов
/ 05 августа 2020

Прямо сейчас я сталкиваюсь с этим сообщением об ошибке при выполнении простого запроса GET в ruby:

#<SocketError: Failed to open TCP connection to api.github.com:443 (getaddrinfo: nodename nor servname provided, or not known)>

Это мой ruby код:

require 'uri'
require 'net/http'

class RequestDouble
  def initialize(endpoint)
    @endpoint = endpoint
  end


  def send_get_request
    url = URI(endpoint)
    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true
    request = Net::HTTP::Get.new(url)
    request['Content-Type'] = 'application/json'
    response = https.request(request)
    JSON.parse(response.read_body)
  rescue StandardError => e
    { 'status' => 500, 'detail' => 'Something went wrong' }
  end

  private


  attr_accessor :endpoint

end

И это выполнение запроса:

github_request = RequestDouble.new('https://api.github.com/repos/robskrob/personal-site')
github_request.send_get_request

Кто-нибудь понимает, почему я получаю сообщение SocketError выше? Кто-нибудь знает, как я могу успешно сделать запрос GET в ruby? Этот запрос https://api.github.com/repos/robskrob/personal-site отлично работает в почтальоне и в моем браузере.

1 Ответ

0 голосов
/ 05 августа 2020

Хорошо, я не уверен на 100%, почему это сработало, но все, что мне нужно было, это выключить и снова включить компьютер. Это сообщение SO привело меня к решению. curl работал на меня, выполняя запрос в моей оболочке, поэтому на стороне ruby должно было быть что-то плохо кэшированное, поскольку это связано с сетью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...