Добрый день в моем часовом поясе.
Я занимаюсь разработкой очень простого http-бота. Я использую класс javax.net.ssl.HttpsURLConnection, и мне нужно сделать несколько запросов.
Фрагмент кода:
HttpURLConnection urlConnection =
(HttpURLConnection) new URL(url+"?"+firstParameters).openConnection();
urlConnection.setRequestProperty("Accept-Charset", "UTF-8");
headerFields = urlConnection.getHeaderFields();
keys = headerFields.keySet();
for(String key : keys){
if(key != null && key.contains("ookie")){
cookies = urlConnection.getHeaderField(key);
break;
}
}
for(String cookie : cookies.split(";")){
if(cookie.contains("JSESSION")){
JSESSION = cookie.split("=")[1];
break;
}
}
document = new InputSource(urlConnection.getInputStream());
parser.setDocument(document);
attributesId.put("name",new ArrayList<String>(Arrays.asList(attributesNames)));
elementsIds.put("INPUT",attributesId);
elements = parser.getValues(elementsIds);
for(String attr : attributesNames){
secondParameters = secondParameters.replaceAll("#r"+index,elements.get(attr));
}
urlConnection.getInputStream().close();
//Second call
urlConnection = (HttpURLConnection) new URL(url2).openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Cookie", "JSESSIONID="+JSESSION);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
payload = new PrintWriter(urlConnection.getOutputStream());
payload.print(secondParameters);
payload.flush();
payload.close();
Подводя итог приведенному выше коду, сначала я делаю запрос без какой-либо полезной нагрузки и вижу правильный ответ от сервера, но проблема заключается в том, что я делаю второй запрос (теперь с полезной нагрузкой и с файлом cookie JSESSION), то, что я получаю, это тот же ответ, который я получил в первом запросе, похоже, я снова делаю первый запрос.
Итак, мой вопрос, что я делаю не так?
Мне просто нужно открыть одно соединение, а затем изменить заголовки и полезную нагрузку?
Есть какое-нибудь руководство, связанное с несколькими запросами http (со смешанными методами, post и get)?
Заранее спасибо
С наилучшими пожеланиями