Выдает юнит-тестирование соединения с URI - PullRequest
1 голос
/ 03 июня 2011

Я тестирую свой веб-сервис на Java / Jersey и сталкиваюсь с интересным тестовым примером. Я проверяю коды состояния различных записей URI, чтобы убедиться, что неправильные URI не уничтожат мой код или что-либо еще. В тестовых случаях, когда я добавляю недопустимые символы (такие как! @ $ # <> И т. Д.), Мой браузер выдает ошибку 404, как и следовало ожидать, но JUnit показывает ошибку как ошибку 500. Это происходит в тех случаях, когда я добавляю такие вещи, как «<134->», и в тех случаях, когда я пытаюсь ввести HTML-код (например, «myURI<html><p>hello</p><br></html>/restofmyURI»).

Есть идеи, почему я получаю разные ответы от сервера на один и тот же вызов и / или как объединять ответы?

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Просто хочу свести концы с концами для моего процесса здесь. В итоге мне не нужно было кодировать мои тесты, поскольку 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();  
}  

Кодирование (если необходимо) будет выполнено перед передачей в этот метод.

0 голосов
/ 03 июня 2011

Вместо прямого кодирования строки. Кодировать объект URL. Это должно помочь предотвратить MalformedURLException

 try{
     URL url = new URL("http://myurl/otherparameters/here");    
     String encodedurl = URLEncoder.encode(url.toString(),"UTF-8");     
  }
  catch(MalformedURLException mue)
  {
     System.err.println(mue); 
  }
  catch(UnsupportedEncodingException uee)
  {
     System.err.println(uee);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...