如何使用 jsoup post/get 发送不同数量的参数?

How to send varying number of parameters using jsoup post/get?

在使用 jsoup 发送表单 post/get 之前,我正在抓取表单页面,然后 parsing/modifying 网页中的输入参数。

修改参数后,我尝试发送 post 但出现问题。可能的参数对(名称、值)的数量取决于形式。

jsoup 中的正常 post 如下所示:

Connection.Response res = Jsoup.connect(formDTO.getUrl())
                .data("username", "admin", "password", "admin", "login-php-submit-button", "Login")
                .method(getMethod(formDTO.getMethod()))
                .execute();
        Document doc = res.parse();
        System.out.println(doc.toString());

.data() 接受参数对(名称、值),对于多个参数,根据我的发现,我可以增加 .data("username", "admin", "password", "admin") 中的数量对,或者我可以增加数量.data("name","value") 个。但是如果你不知道你得到了多少参数,这些解决方案就不起作用。

我不想被迫编写许多相同的函数,除了有不同数量的 .data() 调用...

javaDoc 说:

Add a number of request data parameters. Multiple parameters may be set at once, e.g.: .data("name", "jsoup", "language", "Java", "language", "English"); creates a query string like: ?name=jsoup&language=Java&language=English Parameters: keyvals - a set of key value pairs. Returns: this Connection, for chaining

有没有办法构建 post 以便它可以接受不同数量的参数?

经过一番挖掘,我发现 data() 被 Map 重载,这可以解决参数数量变化的问题。

文档 here

Connection data(Collection data) Adds all of the supplied data to the request data parameters Connection data(Map data) Adds all of the supplied data to the request data parameters Connection data(String... keyvals) Add a number of request data parameters.