Forms 在Clojure中解析和提交HTML表单(根据Hpricot)?

Forms 在Clojure中解析和提交HTML表单(根据Hpricot)?,forms,http,clojure,apache-httpclient-4.x,Forms,Http,Clojure,Apache Httpclient 4.x,我试图找到一个高级Clojure库,用于发出HTTP和HTTPS请求,解析响应中的表单和链接,然后发布更新的表单或后续链接。理想情况下,可以自动处理重定向和cookie(即会话)。也就是说,我希望我的代码能够尽可能地模拟用户在没有浏览器的情况下从浏览器驱动webapp 几年前,我们使用Hpricot和Ruby来完成类似的任务,但如果可能的话,我更喜欢使用Clojure。根据记忆——我已经多年没有使用Hpricot了——我们能够以最小的努力完成这一切:我们能够专注于驱动应用程序的“什么”,而不是“

我试图找到一个高级Clojure库,用于发出HTTP和HTTPS请求,解析响应中的表单和链接,然后发布更新的表单或后续链接。理想情况下,可以自动处理重定向和cookie(即会话)。也就是说,我希望我的代码能够尽可能地模拟用户在没有浏览器的情况下从浏览器驱动webapp

几年前,我们使用Hpricot和Ruby来完成类似的任务,但如果可能的话,我更喜欢使用Clojure。根据记忆——我已经多年没有使用Hpricot了——我们能够以最小的努力完成这一切:我们能够专注于驱动应用程序的“什么”,而不是“如何”

我找到了clj http,但这似乎比我要寻找的级别低了一步(没有表单解析)——尽管它基于ApacheHttpComponents,它似乎为表单公开了一个漂亮、流畅的API

询问Clojure中的屏幕抓取,有一些很好的建议,但没有真正解决上述问题的建议

HTTP工具包看起来是上面的一个很好的基础,但它并没有形成解析或会话管理(如我所见)。 目前,我已经转向直接从Clojure使用ApacheHttpComponents Java库。有谁能提出更好的——也许更像Clojure惯用的——替代方案吗?或者他们发现在类似情况下工作良好的任何东西?我的目标是快速编写最少的代码来调查web服务的问题。这不是生产代码。我主要关心的是节省时间,而不是得到一个“理想”的解决方案

[背景是,我试图模仿某些形式的用户行为,以便首先复制,然后尝试跟踪大量遗留Java/EJB代码中的间歇性错误。然而,问题似乎每数千篇文章只发生一次。(可疑的是某种形式的缓存问题。)然而,事后发现问题的存在是很容易的。]

您已经看过了吗?在上面

你似乎真的有两个部分。第一部分是(1)一个类似于Selenium的客户端,它驱动(2)一个Web服务器


对于第(1)部分,Selenium、Enlive或类似的工具将允许您模拟浏览器来提交数据、读取响应并从中做出响应。对于第(2)部分,您似乎只需要一个常规的Clojure web框架,例如(较旧且更简单)或(较新且更强大)。

您考虑过selenium吗?有一个针对selenium的clojure包装:我一直在阅读关于selenium的Javadoc。我看不出任何方法可以在请求中取出表单,更新它们并提交更改。因为Enlive看起来很有希望。但我理想中想要的是非常高层次的东西。我希望能够这样做:发出get请求,从响应中“提取”表单,更新一些字段,并获得下一个响应,就像我(例如)单击标记为“下一步”的按钮一样。顺便说一句,2)是一个现有的遗留Java/EJB/JBoss系统,有一个偶发的问题,我们正在努力追踪。Selenium看起来很有用——但我真的希望我的代码直接充当客户机(而不是通过驱动浏览器),正如我预期的那样,我以后可能需要从代码中运行多个“客户机”。