HtmlUnit HtmlFileInput.setData() 不工作
HtmlUnit HtmlFileInput.setData() not working
我正在尝试使用 HtmlUnit HtmlFileInput class 将文件上传到网站。我有一个 byte[] 数组中的数据,我想发送它而不先将它写入文件。
我正在尝试:
HtmlFileInput fileInput = form.getInputByName("file");
fileInput.setData(data);
HtmlElement button = form.getInputByName("validate");
HtmlPage responsePage = button.click();
这是行不通的。但是,当我尝试
HtmlFileInput fileInput = form.getInputByName("file");
fileInput.setValueAttribute("file.txt");
HtmlElement button = form.getInputByName("validate");
HtmlPage responsePage = button.click();
一切正常。文档似乎表明 setData()
做的正是我想做的,但似乎没有任何 HtmlUnit 代码甚至使用调用 setData()
时设置的 data_ 变量。该代码使用调用 setValueAttribute()
时设置的 files_
字段。
我注意到打开的几个旧错误都谈到了类似的问题,并且说它们都已修复。
我是否试图以不应该使用的方式使用 setData()
?
谢谢。
简而言之 - data_ 由 getSubmitNameValuePairs() 使用,并且还有针对它的单元测试(例如 com.gargoylesoftware.htmlunit.html.HtmlFileInput2Test.setValueAttributeAndSetDataDummyFile())。
这里的技巧是缺少文件的其余部分 - 如果您想上传您的东西,您必须模拟更多。请设置值(以提交虚拟文件名)和内容类型,以帮助服务器理解您的数据。
HtmlFileInput fileInput = form.getInputByName("file");
fileInput.setValueAttribute("dummy.txt");
fileInput.setContentType("text/csv");
fileInput.setData("My file data".getBytes());
我想我必须为此改进一下文档。
如果你愿意,我们可以讨论这个问题,或者如果你想看到一个快速修复 - 只需在 github.
上打开一个问题
我正在尝试使用 HtmlUnit HtmlFileInput class 将文件上传到网站。我有一个 byte[] 数组中的数据,我想发送它而不先将它写入文件。
我正在尝试:
HtmlFileInput fileInput = form.getInputByName("file");
fileInput.setData(data);
HtmlElement button = form.getInputByName("validate");
HtmlPage responsePage = button.click();
这是行不通的。但是,当我尝试
HtmlFileInput fileInput = form.getInputByName("file");
fileInput.setValueAttribute("file.txt");
HtmlElement button = form.getInputByName("validate");
HtmlPage responsePage = button.click();
一切正常。文档似乎表明 setData()
做的正是我想做的,但似乎没有任何 HtmlUnit 代码甚至使用调用 setData()
时设置的 data_ 变量。该代码使用调用 setValueAttribute()
时设置的 files_
字段。
我注意到打开的几个旧错误都谈到了类似的问题,并且说它们都已修复。
我是否试图以不应该使用的方式使用 setData()
?
谢谢。
简而言之 - data_ 由 getSubmitNameValuePairs() 使用,并且还有针对它的单元测试(例如 com.gargoylesoftware.htmlunit.html.HtmlFileInput2Test.setValueAttributeAndSetDataDummyFile())。
这里的技巧是缺少文件的其余部分 - 如果您想上传您的东西,您必须模拟更多。请设置值(以提交虚拟文件名)和内容类型,以帮助服务器理解您的数据。
HtmlFileInput fileInput = form.getInputByName("file");
fileInput.setValueAttribute("dummy.txt");
fileInput.setContentType("text/csv");
fileInput.setData("My file data".getBytes());
我想我必须为此改进一下文档。
如果你愿意,我们可以讨论这个问题,或者如果你想看到一个快速修复 - 只需在 github.
上打开一个问题