当前位置: 首页 > 面试题库 >

如何使用JSoup发布文件?

曾实
2023-03-14
问题内容

我使用JSoup使用以下代码发布值:

Document document = Jsoup.connect("http://www......com/....php")
                    .data("user","user","password","12345","email","info@tutorialswindow.com")
                    .method(Method.POST)
                    .execute()
                    .parse();

现在我也要提交文件。就像带有文件字段的表单一样。这可能吗 ?如果比怎么?


问题答案:

从Jsoup 1.8.2(2015年4月13日)开始,通过新data(String, String, InputStream)方法才支持此功能。

String url = "http://www......com/....php";
File file = new File("/path/to/file.ext");

Document document = Jsoup.connect(url)
    .data("user", "user")
    .data("password", "12345")
    .data("email", "info@tutorialswindow.com")
    .data("file", file.getName(), new FileInputStream(file))
    .post();
// ...

在旧版本中,multipart/form-data不支持发送请求。最好的选择是为此使用一个值得使用的HTTP客户端,例如Apache
HttpComponents Client
。最终,您可以获得HTTP客户端响应,String以便可以将其反馈给Jsoup#parse()method。

String url = "http://www......com/....php";
File file = new File("/path/to/file.ext");

MultipartEntity entity = new MultipartEntity();
entity.addPart("user", new StringBody("user"));
entity.addPart("password", new StringBody("12345"));
entity.addPart("email", new StringBody("info@tutorialswindow.com"));
entity.addPart("file", new InputStreamBody(new FileInputStream(file), file.getName()));

HttpPost post = new HttpPost(url);
post.setEntity(entity);

HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
String html = EntityUtils.toString(response.getEntity());

Document document = Jsoup.parse(html, url);
// ...


 类似资料:
  • 问题内容: 我正在尝试将数据发布到网站中,以使用Jsoup登录该网站,但是它不起作用? 我正在尝试代码 这是在pagesource中提供正常的登录页面 我也尝试过代码 这也是在pagesource中再次提供正常的登录页面。 关于相同的任何建议将不胜感激! 谢谢.... 问题答案: 我将通过举例来回答您的问题。假设您要登录到facebook。 然后,除了用户名和密码外,还有许多其他参数也通过请求传递

  • Im很难通过HTTPS获得java提交POST请求 编辑: 当服务器通过HTTPS获得一个POST时,似乎涉及到302重定向(这在http上不会发生),我如何使用jsoup存储与302一起发送到下一页的cookie呢?

  • 我试图使用FetchAPI从一个输入中发布多个文件,但表单数据在附加后仍然为空 我看了看这里,这里,这里,这里和这里的答案,并尝试了他们都没有用 我使用Laravel框架作为后端,这是我的刀片视图文件 控制台记录一个空表单数据对象 这是后端的代码 在其中我得到一个空数组 真的不知道为什么这不起作用!你知道我做错了什么吗?

  • 问题内容: 当我使用以下命令将文件发布到烧瓶服务器时,使用原始HTML可以从烧瓶请求全局访问文件: 在烧瓶中: 当我尝试对Axios执行相同操作时,烧瓶请求全局为空: 如果我使用上面相同的uploadFile函数,但从axios.post方法中删除标头json,则会在flask请求对象的表单键中获得字符串值的csv列表(文件为.csv)。 如何获取通过axios发送的文件对象? 问题答案: 将文件

  • 问题内容: 我正在使用python-mosquitto订阅我的MQTT代理,该代理支持文件类型上传。从命令行在Mosquitto上使用- f标志可以很好地使用它。但是,当我从python脚本中进行操作时,我无法弄清楚如何使用client.publish(topic,有效负载)指定要发布的文件。 当我尝试向它扔一些奇怪的东西时,Python mosquitto给了我错误。我已经有一个文件存储在本地目

  • 使用raw HTML,当我将文件发布到flask服务器时,使用以下方法,我可以从flask请求全局访问文件: 烧瓶中: 如果我使用上面相同的uploadFile函数,但从Axios.Post方法中删除headers json,我将在flask请求对象的form键中获得一个字符串值的csv列表(文件是.csv)。 如何获得通过Axios发送的文件对象?