我有一个问题..我想从网站下载XML一些信息(我知道该怎么做),我知道如何从网站上获取信息,但问题是我首先需要登录.
它的代码部分:
<form method="post" action="logowanie.php">
<table class="center">
<tr>
<td><label for="username">Login:</label></td>
<td><input type="text" name="username" value=""></td>
<td rowspan="2"><div class="submit"><input type="submit" value="OK" name="submit"></div></td>
</tr>
<tr>
<td><label for="password">Has?o:</label></td>
<td><input type="password" name="password" value=""></td>
Run Code Online (Sandbox Code Playgroud)
我需要一些如何输入用户名密码并按下提交按钮.任何想法,代码示例怎么做?非常感谢.
我在Java/Scala中做它.
虽然 ApacheHttpClient可以工作,但从 Scala 使用它是不惯用且冗长的,并且Dispatch库提供了一个很好的 Scala 包装器,可让您编写更简洁的代码。你可以这样使用它:
import dispatch._
val u = url("https://site.com/logowanie.php")
val info = Seq("username" -> "me", "password" -> "secret")
val client = new Http
client(u << info >>> System.out)
Run Code Online (Sandbox Code Playgroud)
此示例将简单地打印响应,但您可以轻松提供处理响应的更复杂的方法,并且您client现在保存继续与站点交互所需的 cookie。
这是我用来登录系统的一个更复杂的示例,该系统要求我在登录之前从表单中获取生成的标识符:
import dispatch._
import dispatch.jsoup.JSoupHttp._
val u = url("https://myuni.edu/something/login")
val info = Seq(
"username" -> "me",
"password" -> "secret",
"warn" -> "true",
"submit" -> "LOGIN",
"execution" -> "e1s1",
"_eventId" -> "submit"
)
val client = new Http
val id = client(u </> (_.select("input[name=lt]").first.attr("value")))
client(u << info :+ ("lt" -> id) >>> System.out)
Run Code Online (Sandbox Code Playgroud)
在这里,我使用 Dispatch 的JSoup支持来解析表单页面并提取我需要的标识符,然后在提交请求时将其添加到表单参数中。
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |