Просто хочу свести концы с концами для моего процесса здесь. В итоге мне не нужно было кодировать мои тесты, поскольку URL-адреса будут вызываться напрямую, а не через браузер, но у меня был метод кодирования до того, как я это понял. Основываясь на предложении Кая (см. Комментарии к моему первоначальному вопросу), я закодировал строку по частям, разбивая на любые символы, которые мне нужно было оставить незакодированными (а именно :
и /
для этого случая). Это немного сложнее, чем мне кажется, но это послужило своей цели.
- Изменить: Соответствующий код -
Вот метод моего теста, который я вызываю, чтобы открыть соединение с сервером (используя обычную аутентификацию):
private void getConnection(String target, String user, String pass) throws Exception
{
URL url = new URL(target);
URLConnection conn = url.openConnection();
//Here's where basic auth kicks in
String creds = user + ":" + pass;
String encoded = new sun.misc.BASE64Encoder().encode(creds.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encoded);
//This part doesn't rely on authentication
conn.connect();
}
Кодирование (если необходимо) будет выполнено перед передачей в этот метод.