Java io.FileNotFoundException; подозрительный порт в вопросе
Контекст: я очень опытный программист, но не очень опытный программист на 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, который, я действительно, ожидал бы быть недействительным. Тем не менее, я понятия не имею, почему номер порта будет потерян.
Любые идеи будут приветствоваться.
2 ответа
Как уже упоминалось в этом ответе, вы можете установить User-Agent
а также Accept
свойства. Я думаю, что если вы используете нестандартный порт, URLConnection
не может правильно угадать тип контента, который вы ожидаете получить.
Он не имеет ничего общего с номером порта. Указанный вами URL не найден на сервере. HTTP-статус 404. Вы не можете получить это по неправильному номеру порта: вы получите исключение ConnectException.