设备上的java.net.sockettimeoutexception,而不是emulator jsoup

3gtaxfhh  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(182)

我目前正在为我的学校网站做一个android网站垃圾项目。
我尝试使用jsoup检查登录凭据,并检查网页是否包含某种错误消息。当我在androidstudio中使用仿真器时,以及在我将应用程序上传到自己的设备后的前10分钟,这一切都非常好,但是突然我得到了一个java.net.sockettimeoutexception。
java.net.sockettimeoutexception:30000ms后无法连接到[学校url]
我从未在模拟器上收到超时消息。
这是我的密码。网络交互在executor服务上运行,我使用callable返回状态

Connection.Response loginForm = Jsoup.connect(LOGIN_FORM_URL)
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0")
                    .method(Connection.Method.GET)
                    .timeout(30*1000)
                    .execute();
            Document loginPage = loginForm.parse();
            HashMap<String, String> cookies = new HashMap<>(loginForm.cookies());

            String authToken = loginPage.select("div.mdl-cell:nth-child(3) > input:nth-child(3)")
                    .first()
                    .attr("value");

            HashMap<String, String> formData = new HashMap<>();
            formData.put("login", AES.decrypt(username, LoginActivity.usernameKey));
            formData.put("passwort", AES.decrypt(password, LoginActivity.passwordKey));
            formData.put("loginhash", authToken);

            Connection.Response homePage = Jsoup.connect(LOGIN_ACTION_URL)
                    .cookies(cookies)
                    .data(formData)
                    .method(Connection.Method.POST)
                    .execute();

            Document doc = homePage.parse();
            Log.d("log", doc.select("div.mdl-cell:nth-child(4)").get(0).text());
            if (doc.select("div.mdl-cell:nth-child(4)").get(0).text().contains("Wichtige Dokumente")) {
                return LoginActivity.LOGIN_SUCCESSFUL;
            } else {
                return LoginActivity.LOGIN_FAILED;
            }

有人知道我做错了什么吗?它在模拟器上运行,任何时候都没有任何问题。
错误发生在第一个。execute()

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题