当我单击此页面上的搜索按钮时,它会发送一个发布请求。我想通过 cli-http 发帖。我怎样才能做到这一点?
(def default-http-opts
{:socket-timeout 10000
:conn-timeout 10000
:insecure? true
:throw-entire-message? false})
(clj-http/post initial-url default-http-opts)
可以发布请求,但问题是我想传入一些参数。这些参数(选择的按钮)在页面上是默认的。
他们是:
AdvancedSearchForm:CourseOrSubjectSelection=ALL_ALL
AdvancedSearchForm:GraduateLevelSelection=ALL
AdvancedSearchForm:allStudyAreas=t
AdvancedSearchForm:departmentList=
AdvancedSearchForm:facultyList=
AdvancedSearchForm:keywords=
AdvancedSearchForm:level=ALL
AdvancedSearchForm:semester=ALL
oracle.adf.faces.FORM=AdvancedSearchForm
oracle.adf.faces.STATE_TOKEN=_id21519:_id21520
source=AdvancedSearchForm:searchButton
键 AdvancedSearchForm:semester 包含 ':',所以我使用字符串作为键,例如“AdvancedSearchForm:semester”,在 clj-http 中可以吗?
我这样做:
(spit (file "/tmp" "ts.html")
(:body (http/post initial-url
{:form-params {"AdvancedSearchForm:CourseOrSubjectSelection" "ALL_ALL", "AdvancedSearchForm:GraduateLevelSelection" "ALL"}})))`
实际上它返回的页面确实是“结果”,但没有列出任何课程。只有模板。我想获取所有仅通过手动单击显示的课程链接。有什么帮助吗?
是我从 Tamper Data 截取的图像。它显示了我单击“搜索”按钮后会发生什么。似乎客户端被重定向到 searchresult.jsp。我用 curl 来模仿它。我这样做
curl -D "form data..." https://handbook.unimelb.edu.au/faces/htdocs/user/search/AdvancedSearch.jsp
然后快速运行
curl https://handbook.unimelb.edu.au/faces/htdocs/user/search/SearchResults.jsp
尽管页面已下载,但未显示任何结果内容。