2015-10-04 4 views
1

Я пытаюсь использовать этот код, чтобы удалить пользователя из базы данных перед запуском несколько тестов:Кажется метод .Подайте() не работает

URL url = new URL("someurl/[email protected]"); 
HttpURLConnection huc = (HttpURLConnection)url.openConnection(); 
String userPassword = "is:IS!"; 
String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes()); 
huc.setRequestMethod("GET"); 
huc.setRequestProperty("Authorization", "Basic " + encoding); 
huc.connect(); 

Это не работает для меня (user001 является все еще представлены в базе данных). Но все работает нормально, если я использую .getResponseCode() вместо .connect(). Зачем?

ответ

1

В sun.net.www.protocol.http.HttpURLConnection реализации HttpURLConnection, подключение() сама по себе фактически не посылать запрос (включая проверку подлинности, обрабатывать повторно руководит и т. д.). Для этого требуется вызов getInputStream(), который может появиться позже.

Вызов getResponseCode вызывает getInputStream, если он еще не был вызван.

2

Потому что, когда вы звоните

huc.connect(); 

вы на самом деле не вызывая URL-адрес. Вы только открываете соединение с сервером. И, как правило, вы не должны вызывать этот метод, потому что вызывается, когда вы называете что-то вроде

getInputStream(), getResponseCode(), or getResponseMessage() 
Смежные вопросы