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.

Другие вопросы по тегам