JavaRush /Java блог /Random UA /JSOUP + multipart/form-data response
wildsinner
41 рівень
Самара

JSOUP + multipart/form-data response

Стаття з групи Random UA
Доброго дня, Загалом необхідно надіслати на сайт дані у вигляді відповіді у формі multipart/form-data. Перехопити запит, що генерується браузером праці не складає, але виконати такий же за допомогою JSOUP викликає складності. Як приклад можна взяти найпростішу форму, яка згенерує необхідний запит.
Request Headers Provisional headers are shown Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjtkXVNw9YVG1H2P9 Назад:null Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,25 .36 X- DevTools-Emulate-Network-Conditions-Client-Id:8DCCE949-56FA-4AB0-81B7-DA2BC7960E5C ->Request Payload ------WebKitFormBoundaryjtkXVNw9YVG1H2P9 Content-Disposition: form-data; name="text" text default ------WebKitFormBoundaryjtkXVNw9YVG1H2P9 Content-Disposition: form-data; name="file1"; filename="" Content-Type: application/octet-stream ------WebKitFormBoundaryjtkXVNw9YVG1H2P9 Content-Disposition: form-data; name="file2"; filename="" Content-Type: application/octet-stream ------WebKitFormBoundaryjtkXVNw9YVG1H2P9-- Я намагався різними способами згенерувати аналогічний запит різними варіантами, і зупинився на такому, але поки "танці з бубнами" не дають результатів. Можливо, у когось є досвід у даному питанні. Якщо вам не важко направте на істинний шлях. Також можливо, є спосіб перехопити запит згенерований JSOUP, що в принципі також дозволило б просунутися далі. Дякую Map responseMap= new HashMap (); String key1 = "------WebKitFormBoundary9A3GpeDAwfa0TBDK\r\n" + "Content-Disposition: form-data; name=\"text\"\r\n\r\n"; String value1 = "text default"; headersMap.put(key1, value1); String key2 = "\r\n------WebKitFormBoundary9A3GpeDAwfa0TBDK\r\n" + "Content-Disposition: form-data; name=\"doc_sma_ref_file\"; filename=\"\"" + "\r\nContent-Type: application/octet-stream\r\n\r\n"; String value2 = ""; headersMap.put(key2, value2); String key3 = "\r\n------WebKitFormBoundary9A3GpeDAwfa0TBDK\r\n" + "Content-Disposition: form-data; name=\"doc_val_ref_file\"; filename=\"\"" + "\r\nContent-Type: application/octet-stream\r\n\r\n"; String value3 = ""; headersMap.put(key3, value3); String key4 = "\r\n------WebKitFormBoundary9A3GpeDAwfa0TBDK--"; String value4 = ""; headersMap.put(key4, value4); Connection.Response resBGT = Jsoup.connect(URL) .header("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary9A3GpeDAwfa0TBDK") .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36") .followRedirects(true) .data(responseMap) .cookies(cookies) .ignoreHttpErrors(true) .timeout(15000) .method(Connection.Method.POST) .execute();
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ