当用作库

时间:2015-09-28 18:43:07

标签: java htmlunit

我制作了一个简单的程序来登录Instagram网站。

我的原始代码在java主类中工作,但现在我偶然发现了一些奇怪的东西,当我把代码放入时,我在另一个类中使用它,所以我可以在其他类中加载和使用它来自不同包的课程,不再访问该网站。

我只是对代码做了一些微不足道的更改,比如接收一些参数(比如用户名和密码)。

主类的原始代码:

WebClient webClient = new WebClient(BrowserVersion.CHROME);

        //configuracion de opciones de webbrowser
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setCssEnabled(false);
        webClient.getOptions().setUseInsecureSSL(true);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getCookieManager().setCookiesEnabled(true);

        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setRedirectEnabled(true);
        webClient.getOptions().setThrowExceptionOnScriptError(false);

        HtmlPage page = (HtmlPage) webClient.getPage(authorizationUrl);
        WebResponse response = page.getWebResponse();

        response.cleanUp(); 



       final HtmlForm loginForm = page.getForms().get(0);

     // revisar si la sesion ha expirado
       if(loginForm!=null){ //la session ha expirado relogear

              //se pone el usuario en el input html por nombre
              final HtmlTextInput txtUser = loginForm.getInputByName(usuarioInputName);
              txtUser.setValueAttribute("oestedev");

              //se pone el password en el input html por nombre
              final HtmlPasswordInput txtpass = loginForm.getInputByName(passwordInputName);
              txtpass.setValueAttribute("oeste18");

              //boton submit por valor
             final HtmlSubmitInput submitLogin = loginForm.getInputByValue(submitLoginButtonValue);

             final HtmlPage returnPage = submitLogin.click(); 

             System.out.println( returnPage.getUrl());


             String urlAcceso = returnPage.getUrl().toString();
             String[] parteUrl = urlAcceso.split("=");
            // String urlAuth = parteUrl[0]; // url de autorizacion
             codigo = parteUrl[1]; // codigo para obtener el access token

             System.out.println(codigo);



        }


        webClient.close();

来自我用作库的类:

public void realizarConexion(String usuario,String password) throws IOException{

        String authorizationUrl = service.getAuthorizationUrl(TOKEN_ACCESO);
        String codigo = null;
        WebClient webClient = new WebClient(BrowserVersion.CHROME);

        //configuracion de opciones de webbrowser
            webClient.getOptions().setThrowExceptionOnScriptError(false);
            webClient.getOptions().setCssEnabled(false);
            webClient.getOptions().setUseInsecureSSL(true);
            webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
            webClient.getCookieManager().setCookiesEnabled(true);

            webClient.getOptions().setJavaScriptEnabled(false);
            webClient.getOptions().setRedirectEnabled(true);

            //acceso a la url desde webclient


                  HtmlPage page = (HtmlPage) webClient.getPage(authorizationUrl);
                  WebResponse response = page.getWebResponse();

                    response.cleanUp(); 

                   final HtmlForm loginForm = page.getForms().get(0);

                   // try to login to the site
                   if(loginForm!=null){ //la session ha expirado relogear

                          //se pone el usuario en el input html por nombre
                            HtmlTextInput txtUser = loginForm.getInputByName(usuarioInputName);
                          txtUser.setValueAttribute(usuario);

                          //se pone el password en el input html por nombre
                            HtmlPasswordInput txtpass = loginForm.getInputByName(passwordInputName);
                          txtpass.setValueAttribute(password);

                          //boton submit por valor
                           HtmlSubmitInput submitLogin = loginForm.getInputByValue(submitLoginButtonValue);

                         //accede al sitio
                          HtmlPage returnPage = submitLogin.click();      

                         String urlAcceso = returnPage.getUrl().toString();
                         System.out.println(urlAcceso);// to check if i got to the correct url
                         String[] parteUrl = urlAcceso.split("=");

                         codigo = parteUrl[1]; // codigo para obtener el access token
                   }

                Verifier verifier = new Verifier(codigo);
                Token accessToken = service.getAccessToken(TOKEN_ACCESO, verifier);

                instagram = new Instagram(accessToken);

                webClient.close();

    }

0 个答案:

没有答案