我正在尝试将Jasig CAS的原生登录添加到我的Android应用中。我正在使用OkHttp(和/或RetroFit)来执行HTTP post操作。 HTML登录表单如下所示:
<form id="form1" name="login" class="fm-v" action="/cas/login" method="post">
<input type="hidden" name="lt" value="LT-{login ticket}">
<input type="hidden" name="execution" value="{execution value}">
<input type="hidden" name="_event" value="submit">
<input type="text" id="username" name="username" tabindex="1"
placeholder="Username" class="textfield" autocomplete="off">
<input type="password" id="password" name="password" tabindex="2"
placeholder="Password" class="textfield" autocomplete="off">
<input type="submit" id="submit" name="submit" tabindex="3"
class="button" value="Submit">
</form>
根据我的理解,添加到URL时的“POST”方法如下所示:
"url.base.com/extension?post_name=post_value&..."
所以我发现当我使用OkHttp或者RetroFit时,post方法使用这样的URL:
"login.example.com/cas/login?username={username}&password={password}"
在任何浏览器中输入时,会将其重定向到标准登录页面:login.example.com/cas/login
。但我发现,如果我遵循这种格式:
"login.example.com/cas/login?lt=LT-{current-login-ticket}
&execution={current-execution-value}&_event=submit&username={username}
&password={password}&submit=Submit"
我成功登录了!但我必须使用当前的登录票和执行值。因此,有没有办法根据给出的值自动填写表格数据的其余部分?或者我是否必须自己解析HTML响应以获取登录票和执行值?