HTTP发布表单数据与已有值的字段

时间:2016-01-26 21:14:04

标签: android forms http-post retrofit okhttp

我正在尝试将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响应以获取登录票和执行值?

0 个答案:

没有答案