我正在开发一个项目,我们使用tomcat在Ubuntu服务器上托管站点(使用ruby on rails开发)。我们希望这些站点对使用Nancy开发的服务进行HTTP调用。我们在本地工作,服务托管在我们可以在网络中调用的机器上。然而,我们不能让它在现场工作。这是一个示例调用:
def get_call(routePath)
started_at = Time.now
enc_url = URI.encode("#{settings.service_endpoint}#{routePath}")
uri = URI.parse(enc_url)
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Get.new(uri.request_uri)
resp = http.request(req)
logger.bench 'SERVICE - GET', started_at, routePath
return resp if response_ok?(resp)
end
在本地工作时,设置如下:
settings.service_endpoint = http://10.10.10.27:7820
routePath = /Customers
当我们将其上传到服务器时,我们使用以下内容:
settings.service_endpoint = http://127.0.0.1:24099
routePath = /Customers
我们目前收到以下错误:
SocketError at /register
initialize: name or service not know
突出显示以下行:
resp = http.request(req)
我们完全错误地调用了IP。应该是127.0.0.1,localhost。 10.10.10.27还是完全不同的东西?奇怪的是我们可以在我们的Ubuntu服务器(telnet 127.0.0.1 24099)中通过telnet进行GET调用,这样必须意味着服务器可以进行调用但服务器上托管的站点不能。我们是否需要包含一个HTTP代理(已经阅读了一些参考但不知道是否需要它)。
道歉,如果它显而易见,但我们从来没有尝试过这样的事情,所以这一切都非常令人困惑。所需的任何进一步信息只是让我知道。
答案 0 :(得分:0)
我们将service_endpoint更改为localhost并且工作正常。不确定这是不是因为它不喜欢" http://"或其他一些原因。关于为什么会出现这种情况的任何解释都会非常感激,我们知道。谢谢!