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

Java JSOUP+;多部分/表单数据响应,java,post,jsoup,multipartform-data,Java,Post,Jsoup,Multipartform Data,通常,我需要通过JSOUP以响应多部分/表单数据的形式向站点发送数据 作为一个例子,使用一个简单的表单来实现您的查询 您可以使用第三个参数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 Fi

通常,我需要通过JSOUP以响应多部分/表单数据的形式向站点发送数据

作为一个例子,使用一个简单的表单来实现您的查询


您可以使用第三个参数
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...

在JSOUP1.12.1之前,除非表单过帐中包含文件,否则无法自动发送表单边界

从1.12.1开始,当
内容类型
标题设置为
“多部分/表单数据”
时,Jsoup可以生成表单边界。自动生成mime边界不再需要在表单数据中添加文件

Document doc = Jsoup.connect(echoUrl)
            .header("Content-Type", "multipart/form-data")
            .userAgent(browserUa)
            .data("uname", "Jsoup", "uname", "Jonathan", "百", "度一下")
            .post();
正如您在上面的代码中看到的,没有使用任何文件,但是JSoup将动态处理表单边界,因为内容类型是
multipart/formdata

来源:

  • 我可以在不附加文件的情况下发送请求后多部分/表单数据
  • 通过设置表头允许多部分表单提交;自动添加边界

由于版本1.8.2,JSOUP可能重复发送多部分/表单数据。但我不明白该怎么办it@AlexBykov在您发表评论近3年后,JSOUP1.12.1(2018年12月)推出了一个自动处理表单边界的好功能。(见以下答案)
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...
Document doc = Jsoup.connect(echoUrl)
            .header("Content-Type", "multipart/form-data")
            .userAgent(browserUa)
            .data("uname", "Jsoup", "uname", "Jonathan", "百", "度一下")
            .post();