当前位置: 首页 > 知识库问答 >
问题:

Heroku Java -名称或服务未知

岳劲
2023-03-14

我们有一个私人空间,并提供了一个内部API的访问权限,这样我们就可以从私人空间应用程序访问它。因此,我们开发了一个演示Java应用程序来测试它。当我们尝试用HTTP连接服务时,堆栈跟踪会像这样结束。

java.net.UnknownHostException: [THE_VALID_URL] Name or service not known
java.base/java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929)
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1519)
at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1368)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1302)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)

当我们ping私有空间中的相应IP时,我们可以看到它已启动。但是当我们试图从Java应用程序中访问服务时,它就像上面那样结束了。

Java 代码是这样的:

RequestConfig config = RequestConfig.DEFAULT;
HttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).build();

HttpGet httpGet = new HttpGet("[THE_VALID_URL]");
httpGet.addHeader("Content-Type", "application/json; UTF-8");

HttpResponse resp = client.execute(httpGet);

有没有人有任何想法来解决这个问题?

谢谢你。

[更新]:用这个https://stackoverflow.com/a/35327982/7595094解决

共有1个答案

伯彦君
2023-03-14

似乎是 DNS 名称解析的问题。在私人空间赫洛库文献中,提到

All dyno-to-dyno communication in Private Spaces takes places via the private network. 
To communicate via the private network, your process needs to bind to its dyno’s private IP address on a port between 1024 and 65535. 
The HEROKU_PRIVATE_IP environment variable contains your dyno’s private IP address.
After your process binds to the private IP address, it’s reachable on the chosen port via its DNS name and port. 
The above example would be available on this URL:

http://foo.[APP_NAME].app.localspace:5000/

因此,您可以尝试将您的API绑定到您的私有IP静态端口,并使用这个< code>http://foo。[APP _ NAME]. APP . local space:5000/格式作为URL,以便从您的java应用程序发出GET请求

 类似资料:
  • 问题内容: 我正在尝试使用httplib将信用卡信息发送到authorize.net。当我尝试发布请求时,得到以下回溯: 我这样建立我的请求: 要添加另一层,它正在我们的开发服务器上运行,该服务器具有httplib 2.6,并且在httplib.HTTPSConnection中没有source_address参数。 任何帮助是极大的赞赏。 =============================

  • 问题可能是什么,如何解决?请帮帮我

  • 我正在尝试运行一个电子邮件收割机,当我在没有循环的情况下手动输入url时,我没有任何连接错误。 然而,当我从文件中加载url时,我得到以下错误“名称或服务错误” 回溯(最近一次调用):文件“/usr/lib/python3/dist-packages/urllib3/connection.py”,第141行,在新连接(self.host,self.port),self.timeout,**extr

  • 我正在尝试使用Apache Http组件4.5.1使用Instagram进行oauth登录,但未能成功获取访问令牌。 我很确定这是库本身的问题,因为如果我卷曲,我会得到我想要的结果。 所以,我尝试了几种不同的发布调用方式,但它们都给我相同的结果,所以我将发布我发现的最优雅的方式是使用Fluent-hc lib: 我得到的结果是: Java语言网未知后异常:api。instagram。com:名称或

  • 问题内容: 当我尝试将网页加载到终端时,它给出了错误。 我的PC上有互联网,并尝试通过家庭互联网连接。因此,我这里没有任何代理人参与。 并再次尝试,但并不幸运。 但是,如果我使用IP代替域名,则可以正常工作。 有什么线索吗? 问题答案: 问题是: 启用IPV6 DNS服务器错误 这是我的解决方法: IPV6禁用 开放终端 键入并输入登录为超级用户 输入root密码 键入将目录更改为 键入以在那里创

  • 问题内容: 在服务器中运行代码,env为debian时出现此错误,并且 当我运行时,它可以正常工作,没有任何错误: 问题答案: 似乎您正在尝试将Redis与当前Debian环境无法识别的服务器连接。从Traceback,我看到您正在尝试使用主机名localhost进行连接, 但是,您的系统无法理解“ localhost”,在主机文件中输入内容,即说127.0.0.1是localhost。在/ et