【问题标题】:Suddenly can't connect to external server in JavaJava突然无法连接到外部服务器
【发布时间】:2011-06-20 02:34:40
【问题描述】:

一整天都正常工作,现在突然无法连接。我可以通过浏览器进行连接(你也可以:http://secure.exoterragame.com/noxastra/login.php),但它在我的 Java 应用程序中不起作用。我得到一个 UnknownHostException。

URL register = new URL("http://secure.exoterragame.com/noxastra/login.php" + 
                "?username=" + request.Username + 
                "&password=" + request.Password);

        URLConnection conn = register.openConnection();

我完全被难住了。有谁知道为什么会这样?

(是的,我们将在最终版本中使用 https:P)

【问题讨论】:

  • 可能是一个不好的建议,但是一旦这发生在我身上并且重新启动计算机使其再次工作。
  • 我应该尝试一下。它似乎总是有效。 :P
  • 嗯,如果没有其他方法可行,您可以尝试关闭防病毒/防火墙吗?
  • 尝试在您的主机文件中添加主机名以查看 DNS 是否是问题所在。在最新版本的 Windows 上,它是 \Windows\System32\drivers\etc\hosts,你可以像这样在一行中添加它:205.186.154.148 secure.exoterragame.com
  • 别介意,伙计们。还有更多,我得弄清楚到底发生了什么。

标签: java http


【解决方案1】:

发送packet sniff 以了解幕后情况。 (我建议所有平台使用Wireshark。)

我曾经在 Flash 中遇到过类似的问题,我一直在抓狂,直到我意识到这是 VM 中的一个错误,它让我在没有发送任何数据包的情况下超时!

我认为 Java 不会有这样的错误,但关键是,嗅探有时是无价的。

也许您的浏览器获得了 DNS/hosts 文件更新,但程序没有(或相反?)也许程序卡在(本地)防火墙上?也许它确实登录成功但在重定向响应中中断? (我什至不知道URL 是否能够做到这一点,但仍然......)也许你在某处启用/禁用了 IPv6?

【讨论】:

  • 使用老派 tcpdump 也有帮助!任何你可以用来查看数据包通过网络的东西对于网络程序员来说都是无价的
  • 哦,是的,忘记了。作为参考,它还有一个 Windows 端口,windump
【解决方案2】:
jcomeau@intrepid:/tmp$ cat test.java; javac test.java; java test
import java.net.*;
public class test {
 public static void main(String args[]) throws Exception {
  URL register = new URL(
   "http://secure.exoterragame.com/noxastra/login.php" + 
    "?username=" + "guest" + 
    "&password=" + "guest");
  URLConnection conn = register.openConnection();
 }
}

不会为我抛出异常。也许https://stackoverflow.com/users/800237/adithya-surampudi 的建议会奏效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2013-05-07
    • 2018-04-13
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多