Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jsoup登录到Moody';s_Java_Html_Cookies_Login_Jsoup - Fatal编程技术网

Java Jsoup登录到Moody';s

Java Jsoup登录到Moody';s,java,html,cookies,login,jsoup,Java,Html,Cookies,Login,Jsoup,我在尝试使用Jsoup登录穆迪网站时遇到问题。我对其他网站没有问题,但我在其他情况下的登录方式对Moodys不起作用 这是我的代码: Response initialResponse = Jsoup.connect("https://www.moodys.com/login.aspx") .execute(); Response loginResponse = Jsoup.connect("https://www.moodys.c

我在尝试使用Jsoup登录穆迪网站时遇到问题。我对其他网站没有问题,但我在其他情况下的登录方式对Moodys不起作用

这是我的代码:

Response initialResponse = Jsoup.connect("https://www.moodys.com/login.aspx")
                                .execute();

Response loginResponse = Jsoup.connect("https://www.moodys.com/login.aspx")
                    .cookies(initialResponse.cookies())
                    .data("MdcUserName", "username")
                    .data("MdcPassword", "password")
                    .method(Method.POST).execute();

doc = Jsoup.connect("any other moody's page")
                    .cookies(loginResponse.cookies())
                    .timeout(3000000).get();

System.out.printl(doc.html());

但这是行不通的。我做错了什么?谢谢。

基本上,您的代码在URL和post参数中失败

以下是一个工作示例:

public static void main(String[] args) {
        try
        {
            Response initialResponse;

            initialResponse = Jsoup.connect("https://www.moodys.com/")
                    .execute();

            Response loginResponse = Jsoup
                    .connect("https://www.moodys.com/identity/login")
                    .cookies(initialResponse.cookies())
                    .data("UserName", "--")
                    .data("Password", "--")
                    .data("IsRememberMe", "false")
                                    .method(Method.POST)
                    .execute();
                    //example of internal moody's page.
            Document doc = Jsoup
                    .connect(
                            "https://www.moodys.com/newsandevents/events_/-/-/2/0/elq")
                    .cookies(loginResponse.cookies()).timeout(3000000).get();

                    //simple div selection example
            System.out
                    .println(doc
                            .select("#ctl00_ctl00_MdcWebPartManager_EventsListWebPart_ctl00_ctl00_NoRecordTipsLabel"));
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
输出:

<span id="ctl00_ctl00_MdcWebPartManager_EventsListWebPart_ctl00_ctl00_NoRecordTipsLabel">You have not registered for any upcoming event(s).</span>
您尚未注册任何即将举行的活动。

它是如何工作的?我返回的是登录页面,而不是我要的页面(例如,有一些搜索结果)。@user432我是否应该浏览所有html代码并输入所有隐藏的输入(例如,对于任何“我应该添加”。数据(“名称”,“值”)”到我的connect()如果是这样,我试着这样做smth。但是对于一些隐藏字段,没有“名称”字段。我应该忽略他们吗?或者我应该输入他们的id吗?@Alexey3699106 Nevermind,只是查看了一下他们的网站。他们只发送带有
用户名
密码
和字段
IsRememberMe
的帖子。所以最后的帖子看起来是这样的:
用户名=&password=&IsRememberMe=false
。帖子是sent to
https://www.moodys.com/identity/login
而不是
https://www.moodys.com/login.aspx
,所以请尝试对其进行大量更改以获得答案。但当我尝试其他需要注册的页面时(例如),它对我不起作用。并且对已登录和已注销的用户都有效。您能告诉我,为什么要使用.data(“用户名”)、“--”)和.data(“密码”、“--”)而不是.data(“MdcUserName”、“--”)和.data(“MdcPassword”、“--”)吗?我试图改变这一点,但我得到了这个异常:org.jsoup.unsupportedAdminTypeException:未处理的内容类型。必须是text/*、application/xml或application/xhtml+xml.Mimetype=application/json;charset=utf-8,URL=at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:178)at Test.main(Test.java:35)你能提供你想要加载的页面吗?我不熟悉Moodys是的,当然。例如,这个页面
https://www.moodys.com/page/search.aspx?cy=global&kw=shell&searchfrom=GS&spk=qs&tb=1
(或任何其他搜索页面,搜索仅适用于登录用户).如果你能帮助我,我将不胜感激。我已经浪费了大量时间试图解决这个问题。