Проблема здесь:
Object o = u.unmarshal(connection.getURL());
Вы извлекаете URl из соединения, которое вы уже открыли, и передаете его Unmarshaller, который затем откроет свое собственное соединение, которое завершится неудачей.
Вам нужно дать Unmarshaller InputStream
от соединения, которое вы только что открыли, например,
InputStream inputStream = connection.getInputStream();
Object o = u.unmarshal(inputStream);
и затем перед выходом из метода:
inputStream.close();