0

jsoup を使用してログインしようとすると問題が発生します。これに Cookie があるかどうかわかりません。何か不足していますか?ログインできないのはなぜですか?

import java.io.IOException;
import java.util.Map;

import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class LoginJtest {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        // Connect to page and parse html into a 'Document'


        //This will get you the response.
        Response res = Jsoup
            .connect("https://pslweb01.ciq.labs.att.com:8080/dis/login.jsp")
            .data("txtUserName", "myusername", "txtPassword", "mypassword")
            .method(Method.POST)
            .execute();

        //This will get you cookies
        Map<String, String> loginCookies = res.cookies();

        //And this is the easiest way I've found to remain in session
        Document doc = Jsoup.connect("https://pslweb01.ciq.labs.att.com:8080/dis/")
              .cookies(loginCookies)
              .get();
           String title = doc.title();
       System.out.println(title);


    }
}

これは、アクセスしようとしているログインの Web サイトのソースです。

<div class="loginPanel">
    <div class="container">
    <div class="title">Login</div>
    <form id="loginForm" class="loginForm" method="POST" action="/dis/login">
        <font class="portlet-msg-error"
         style="font-weight: bold; font-size: 10px; color:#FF0000; text-align: center;"></font>
        <table>
        <tr>
            <td class="label">USERNAME:</td>
            <td><input
                value=""
                class="edit"
                id="txtUsernameLogin"
                name="txtUserName"
                type="text"/></td>
        </tr>
        <tr>
            <td class="label">PASSWORD:</td>
            <td><input
                value=""
                class="edit"
                name="txtPassword"
                type="password"/></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
            <input type="checkbox" name="txtRemember" value="true" align="middle"/>
            Remember me on this computer
            </td>
        </tr>
        <tr>
            <td></td>
            <td class=""><input type="submit"
                    class="submit"
                    value="Login"
                    alt="Login"/></td>
        </tr>
        </table>
    </form>
    </div>
</div>
4

1 に答える 1

0

/dis/login.jsp に投稿しているようですが、フォームは /dis/login に投稿しています。

また、Web サイトで採用されているセキュリティ機能が原因である可能性もあります。Jsoup でリファラー、ユーザー エージェントなどを設定してみてください。

于 2013-06-17T17:38:32.047 に答える