上下文:我是一位非常有经验的程序员,但不是一位经验丰富的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。但是,我不知道为什么端口号会丢失。
欢迎任何见解。
答案 0 :(得分:0)
如this answer中所述,您可能需要设置User-Agent
和Accept
属性。我的猜测是,如果你使用非标准端口,URLConnection
无法正确猜出你期望收到的内容类型。
答案 1 :(得分:-1)
它与端口号没有任何关系。在服务器上找不到您提到的URL。 HTTP状态404.您无法从错误的端口号获取该信息:您将获得ConnectException。