JavaRush /Java 博客 /Random-ZH /JSOUP + 多部分/表单数据响应
wildsinner
第 41 级
Самара

JSOUP + 多部分/表单数据响应

已在 Random-ZH 群组中发布
下午好, 一般来说,您需要以 multipart/form-data 形式的响应形式将数据发送到站点。拦截浏览器生成的请求并不困难,但使用 JSOUP 执行相同的请求却很困难。例如,您可以采用最简单的形式来生成所需的请求。
请求标头 显示临时标头 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Content-Type:multipart/form-data; 边界=----WebKitFormBoundaryjtkXVNw9YVG1H2P9 来源:null 升级不安全请求:1 用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/47.0.2526.106 Safari/537.36 X - DevTools-Emulate-Network-Conditions-Client-Id:8DCCE949-56FA-4AB0-81B7-DA2BC7960E5C ->请求负载 ------WebKitFormBoundaryjtkXVNw9YVG1H2P9 内容处置:表单数据;name="text" 文本默认 ------WebKitFormBoundaryjtkXVNw9YVG1H2P9 Content-Disposition: form-data; 名称=“文件1”;filename="" 内容类型:application/octet-stream ------WebKitFormBoundaryjtkXVNw9YVG1H2P9 内容处置:表单数据;名称=“文件2”;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();
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION