我需要弄清楚我的应用程序在提供给提供的域的urlfetch时实际连接到哪个IP地址。我在生产服务器上的应用程序在连接到域时遇到问题,但使用我的计算机上的SDK可以很好地连接。我正在尝试调试此问题,并且我发现Google App Engine可能正在将域解析为与本地计算机不同的IP地址。
如果我有权访问套接字库,这就像socket.gethostbyname('thedomainiwant.com')一样简单,但不幸的是Google不允许App Engine上的套接字库。
有什么想法吗?
如果有一个需要Java或Go on App Engine的解决方案,我也愿意尝试。
2011年6月26日更新:
我改变了生产代码,直接使用IP只是为了让这个工作(它确实如此)但这不是一个很好的长期解决方案因为我不控制服务器我正在制作urlfetches所以IP可能会在没有警告的情况下改变我。
返回的标头在这种情况下没有帮助,因为生产实例解析域的IP地址根本没有响应,请求超时。
如果我正在进行urlfetches的服务器阻止了App Engine,那么通过IP进行urlfetch也无法正常工作......但它确实有效。此外,我与管理服务器的团队交谈,他们确认他们没有阻止App Engine。我仍在纠缠他们以获取更多信息,但这似乎并不是一个问题。
2011年7月7日更新:
Google已确认他们的结果存在问题,影响了我的申请。他们已经应用了一些工作并正在修复。看这里: http://code.google.com/p/googleappengine/issues/detail?id=5244
答案 0 :(得分:1)
目前无法在App Engine上进行名称解析。如果你想这样做,你将不得不通过HTTP调用外部服务。
答案 1 :(得分:0)
看一下响应标题,你可能会得到一个HOST标题,其中包含这个信息。
否则,为什么不在诊断时使用原始IP进行连接?
答案 2 :(得分:0)
您可以使用执行DNS查找的Web服务。您可以在URL中嵌入地址,如下所示:
http://www.dnswatch.info/dns/dnslookup?la=en&host=HOST_HERE&type=A&submit=Resolve
(替换HOST_HERE)然后解析结果。不幸的是它是HTML,但即使是简单的正则表达式也应该成功。你也可以尝试找一些服务,它允许一些XML输出等等 - 有很多这样的服务,只需在谷歌输入“dnslookup”,有人就可以拥有它。