Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java io.FileNotFoundException;可疑港口_Java_Url_Port_Java Io - Fatal编程技术网

Java io.FileNotFoundException;可疑港口

Java io.FileNotFoundException;可疑港口,java,url,port,java-io,Java,Url,Port,Java Io,上下文:我是一个非常有经验的程序员,但不是一个非常有经验的Java程序员 我继承了一小段代码,它生成JNLP来包装一个JAR,以便收集有关客户端计算机的一些信息。在URL中没有显式指定端口的上下文中,这总是很好,但在需要显式指定端口的测试环境中,这是失败的 相关的Java代码是: URL RegURL = new URL(System.getProperty("jnlp.reg")); ... try { //Create connection connection = (HttpUR

上下文:我是一个非常有经验的程序员,但不是一个非常有经验的Java程序员

我继承了一小段代码,它生成JNLP来包装一个JAR,以便收集有关客户端计算机的一些信息。在URL中没有显式指定端口的上下文中,这总是很好,但在需要显式指定端口的测试环境中,这是失败的

相关的Java代码是:

URL RegURL = new URL(System.getProperty("jnlp.reg"));
...

try {
  //Create connection
  connection = (HttpURLConnection)RegURL.openConnection();
  connection.setRequestMethod("POST");
  connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
  connection.setRequestProperty("Content-Language", "en-US");  
  connection.setUseCaches(false);
  connection.setDoInput(true);
  connection.setDoOutput(true);

  //Send request
  DataOutputStream wr = new DataOutputStream (connection.getOutputStream ());
  wr.writeBytes (urlParameters);
  wr.flush ();
  wr.close ();

  //Get Response 
  InputStream is = connection.getInputStream();
  ...
} catch (Exception e) {
  ...
} finally {
  ...
}
RegURL
的值的形式为
”http://arthur.OURCOMPANY.com:81/fb/register.php“
,我已经证实了这一点。但我得到一个客户端错误:

java.io.FileNotFoundException: http://arthur.OURCOMPANY.com/fb/register.php
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at main.main(main.java:253)
    ...
这意味着该错误是由行
InputStream is=connection.getInputStream()触发的
我假设这意味着在某个地方,端口号丢失了,它使用的是一个URL,我确实认为它是无效的。但是,我不知道为什么端口号会丢失


欢迎提供任何见解。

如中所述,您可能需要设置
用户代理
接受
属性。我的猜测是,如果您使用非标准端口,
URLConnection
无法正确猜测您希望接收的内容类型。

它与端口号没有任何关系。在服务器上找不到您提到的URL。HTTP状态404。您无法从错误的端口号获得该端口号:您将获得一个ConnectException。

再次检查属性
jnlp.reg
,并且它在url.Wow中仍然有端口81。不是。今天早些时候,因为我进行了一些调试并检查了它。是时候弄清楚这到底是怎么回事了。哦,我打赌我明白了:调用发生在不同的上下文中,而请求构建JNLP的调用来自本地,因此它不使用显式端口。当我在前面测试组件时,我调用了直接生成JNLP的PHP(即,给出一个显式的浏览器URL)。我不确定我将如何实现这一点,因为来自Java的回调几乎肯定需要使用显式端口来实现,但这是它的本质。如果你愿意,你可以写一些我可以接受的答案。当我们使用.htaccess将
*.jnlp
映射到
*.jnlp.php
时,可能发生了一些事情。毫无疑问,他们设法在那里失去了一些背景。至少现在我知道该做什么了!可能不相关:但是
urlParameters.getBytes().length)
获取默认编码中的长度,该长度可能不同于消息正文的编码(通常为UTF-8)。找不到该长度,因为没有端口号,该长度会转到不同的物理服务器,因此,是的,它与端口号相关。