当前位置: 首页 > 知识库问答 >
问题:

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

卫学真
2023-03-14

通常,我需要通过JSOUP将数据以响应multipart/form-data的形式发送到站点

作为一个示例,使用一个简单的窗体来sgeniriruet您的查询。

<表单操作=«localhost:8000»方法=«post»enctype=»多部分/表单数据»
<输入类型=»文本»名称=»文本»值=»文本默认值»
<输入类型=»文件»名称=»文件1»
<输入类型=»文件»名称=»文件2»
提交

通过浏览器发布响应:

>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 Origin:null
Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 6.1;
WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106
Safari/537.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--

我试图创建一个类似的请求,但一直没有找到正确的方法,使服务器收到了请求。

我的代码:

Map<String, String> responseMap= new HashMap<String, String>();
    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();

也许有人对这件事有经验。如果你送正确的路径。也许有机会看到jsoup生成的请求

共有1个答案

晏华奥
2023-03-14

您可以使用connection.data的第三个参数来完成:

File file1 = new File("C:/dir/file1.txt");
File file2 = new File("C:/dir/file2.txt");
FileInputStream fs1 = new FileInputStream(file1);
FileInputStream fs2 = new FileInputStream(file2);
Connection.Response response = Jsoup.connect("http://www.example.com")
        .data("text", "value")
        .data("file1", "filename", fs1)
        .data("file2", "filename", fs2)
        .userAgent("Mozilla")
        .method(Method.POST)
        .execute();

//Handle your response...
 类似资料:
  • 我目前正在尝试解析我通过Chrome中的Postman插件发送的。然而,我得到的输出如下: 当我尝试调试时,会得到这个输出。当我尝试时,我得到一个空数组,所以我假设数据的格式不正确(只是一个字符串)。在我写我自己的算法之前,我想确定我没有用这个算法重新发明轮子。我做错什么了?或者,如果没有,是否存在一些CakePHP3函数来处理这个问题? 更新 我发现了代码中的错误,路由过程似乎以某种方式将pos

  • 我有个问题,但我看不出我做错了什么?我想用最简单的方法来实现这一点,稍后我会让它变得更复杂,但现在我只想点击post方法,我甚至不在乎里面的代码当前是否正常工作。 我唯一关心的是它会发回一个OK 200的回复。 目前,我收到一个内部服务器错误500响应或405方法不允许响应,具体取决于我是尝试发送数据还是仅使用浏览器强制方法调用。 有一个IOS应用程序发送下面的post请求,我有一个测试PHP脚本

  • 问题内容: 我正在编写一个RESTful API。我在使用不同的动词上载图像时遇到麻烦。 考虑: 我有一个对象,可以通过对URL的发布/放置/删除/获取请求来创建/修改/删除/查看。如果有要上载的文件,则请求是多部分形式;如果只有文本要处理,则请求是application / xml。 为了处理与对象相关的图像上传,我正在做类似的事情: 这里的主要问题是在尝试处理放置请求时,显然$ _POST不包

  • 问题内容: 我正在尝试通过带有POST请求的照片上传 根据自述文件,我应该能够做到这一点 问题是,这不起作用。我收到测试服务器的回复,说它转储了0个post变量。 我已经确认该HTML小页面服务器处于工作状态 所以问题是,请求模块在做什么?有没有更好的方法来发送节点? 问题答案: 经过更多研究后,我决定使用。这使得分段上传非常容易。

  • 我正在尝试通过使用多部分数据主体的JMeter构建HTTP请求。 我有一个HTTP头管理器,其内容类型设置为多部分/表单数据;边界=AaB03x。我选择了“将多部分/表单数据用于POST”。 然后我创建了一个数据主体, 当我运行这个程序时,我发现请求没有正确地发送正文,而是发送了一些随机数据, 发布数据: 并给出错误响应, 我的第二个问题是:请求的第3部分发送一个要上载的文件。我可以通过某种方式传

  • 我是Java(Spring Boot)新手,我正在尝试向s3发送一个