Я должен эмулировать поведение браузера из кода Java.
Мне нужно установить два куки на запрос перед отправкой их на сервер.
Я делаю это:
HttpURLConnection conn = ...
...
conn.addRequestProperty("Cookie", "IDS_SSO_ID=" + "onething");
conn.addRequestProperty("Cookie", "JSESSIONID=" + "otherthing"));
...
conn.close();
В журналах сервера я вижу, что cookie 'IDS_SSO_ID' извлекается как "onething, JSESSIONID", что вызывает ошибку.
Обратите внимание, что у меня нет доступа ни к серверу, ни к его исходному коду, у меня есть только логи.
Как мне устанавливать куки, используя HttpURLConnection?
Итак, я создал небольшую демонстрацию;Если я использую addRequestProperty, то отправляется неверный заголовок cookie:
URL url = new URL("https://en0hphl04qcwvf.x.pipedream.net/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("Cookie", "JSESSIONID=akarmi123");
conn.addRequestProperty("Cookie", "IDS_SSO_ID=netudd321");
byte[] bytes = StreamUtils.copyToByteArray(conn.getInputStream());
System.out.println("response: " + new String(bytes));
conn.disconnect();
Значение заголовка cookie: JSESSIONID = akarmi123, IDS_SSO_ID = netudd321
Если я использую'setRequestProperty' и вручную создать заголовок cookie, затем отправляется правильный заголовок cookie:
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Cookie", "JSESSIONID=akarmi123; IDS_SSO_ID=netudd321");
bytes = StreamUtils.copyToByteArray(conn.getInputStream());
System.out.println("response: " + new String(bytes));
conn.disconnect();
Значение заголовка cookie: JSESSIONID = akarmi123;IDS_SSO_ID = netudd321
Странно то, что большое количество ресурсов в Интернете (и здесь, в том числе и в SO) рекомендует мой первый подход - множественные вызовы addRequestProperty (...):
Как установить Cookies на Http Get метод с использованием Java
https://www.codota.com/code/java/methods/java.net.URLConnection/addRequestProperty
https://www.programcreek.com/java-api-examples/?class=java.net.HttpURLConnection&method=addRequestProperty
http://www.massapi.com/method/ad/addRequestProperty-2.html
Но похоже, что они не правы ...