Csa*_*abi 12 java post file-upload jsoup
我使用JSoup使用以下代码发布值:
Document document = Jsoup.connect("http://www......com/....php")
.data("user","user","password","12345","email","info@tutorialswindow.com")
.method(Method.POST)
.execute()
.parse();
Run Code Online (Sandbox Code Playgroud)
现在我也想提交一份文件.就像带有文件字段的表单一样.这可能吗 ?如果比怎么样?
Bal*_*usC 16
这仅在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();
// ...
Run Code Online (Sandbox Code Playgroud)
在旧版本中,multipart/form-data不支持发送请求.您最好的选择是使用一个完整的HTTP客户端,例如Apache HttpComponents Client.您最终可以获取HTTP客户端响应,String以便将其提供给Jsoup#parse()方法.
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);
// ...
Run Code Online (Sandbox Code Playgroud)
接受的答案在撰写本文时有效并且是正确的,但从那时起 JSoup 已经发展,并且自 1.8.2 版以来,可以将文件作为多部分形式的一部分发送:
File file1 = new File("/path/to/file");
FileInputStream fs1 = new FileInputStream(file1);
Connection.Response response = Jsoup.connect("http://www......com/....php")
.data("user","user","password","12345","email","info@tutorialswindow.com")
.data("file1", "filename", fs1)
.method(Method.POST)
.execute();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7244 次 |
| 最近记录: |