首页 > 解决方案 > 如何让 HttpClient 返回状态码?

问题描述

我正在开发我的第一个 java 软件作为项目,使用我从大学学到的东西:'(

我正在尝试将学生使用它来获得结果的这个网站转换为软件,

抱歉,网站是法语,请使用谷歌翻译页面

网址:https ://www2.inscription.tn/ORegMx/servlet/AuthentificationEtud?ident=cin

如果你注意到有 =cin,我还没有学过 php,但是,我认为它可以做一些我不知道如何使用 java 处理 http 请求的事情,所以我这样做了,但我需要知道如何获取状态代码知道它是否是 200 所以连接成功并且输入是正确的并且用户已经连接并且如果另一个代码那么有一个错误

WebDriver driver = new HtmlUnitDriver();
driver.get("https://www4.inscription.tn/ORegMx/servlet/AuthentificationEtud");

WebElement cin = driver.findElement(By.name("cin"));
WebElement date = driver.findElement(By.name("dn"));
WebElement captcha = driver.findElement(By.name("cincap"));

String cinValue=CIN.getText();
String dateValue=daten.getText();
String captchaValue=captcha.getText();

cin.sendKeys(cinValue);
date.sendKeys(dateValue);
captcha.sendKeys(captchaValue);

captcha.submit();

网站的登录表单中也有一个验证码,所以我正在考虑使用 jTextPane 作为小浏览器窗口(仍然不知道该怎么做)来显示验证码,以便用户知道要写什么

我正在将 Eclipse 与 windowbuilder pro 一起使用

有效的http请求


Request URL: https://www4.inscription.tn/ORegMx/servlet/AuthentificationEtud?ident=cin
Request Method: POST
Status Code: 200 OK
Remote Address: 196.203.190.21:443
Referrer Policy: no-referrer-when-downgrade
Connection: close
Content-Type: text/html; charset=Windows-1256
Date: Sat, 19 Jan 2019 21:02:02 GMT
Transfer-Encoding: chunked
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-TN,fr;q=0.9,fr-FR;q=0.8,en-US;q=0.7,en;q=0.6,ar;q=0.5
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: 79
Content-Type: application/x-www-form-urlencoded
Cookie: JSESSIONID=EEA86798B29324667FE8560D0CEB61FC; __utmc=186433398; __utmz=186433398.1547866934.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=186433398.482680440.1547866934.1547923662.1547930591.8; __utmt=1; __utmb=186433398.8.10.1547930591
Host: www4.inscription.tn
Origin: https://www4.inscription.tn
Referer: https://www4.inscription.tn/ORegMx/servlet/AuthentificationEtud?ident=cin
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
ident: cin
cin: xxxxxxxx
dn: xx/xx/xxxx
cincap: b2mb
inscription: valider
etablissement: -1

这是 html 响应页面


<html><!-- InstanceBegin template="/Templates/standard.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1256">
<!-- InstanceBeginEditable name="doctitle" -->
    <title>Dashboard - Inscription universitaire en ligne</title>

<!-- InstanceEndEditable -->

<meta http-equiv="expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
    <link href="/ORegMx/css/style_jsp.css" rel="stylesheet" type="text/css">
    <link href="/ORegMx/css/style.css" rel="stylesheet" type="text/css">
    <link href="/ORegMx/css/params.css" rel="stylesheet" type="text/css">
    <link href="/ORegMx/css/font-awesome.min.css" rel="stylesheet" type="text/css">

    <script language="javascript" src="/ORegMx/scripts/cin_verif.js"></script>

<script language="javascript">
    function Inscrire_cin(form) {
        if (!is_cin(form,0)) {
            window.alert("LE N° DE CIN SAISI EST INCORRECT");
        } else {
            form.submit()
        }
    }

</script>
<!-- InstanceBeginEditable name="head" -->
<script language="javascript" src="/ORegMx/jscript/etud.js"></script>

<!-- InstanceEndEditable -->


<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-2629522-5']);
  _gaq.push(['_setDomainName', '.inscription.tn']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>



</head>

<body bgcolor="#FFFFFF" topmargin="2">


<link type="text/css" href="/ORegMx/header.css" rel="stylesheet" />
<div id="top">
    <div id="top_content">

        <div id="top1"><p><img border="0" src="/ORegMx/images/ministere.png"></p></div>

        <div id="top2">
            <a target="_blank"  href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.inscription.tn%2F&amp;t="><img alt="Facebook" src="/ORegMx/images/wpzoom24/facebook.png"></a>
            <a target="_blank" href="http://twitter.com/share?text=&amp;url=http%3A%2F%2Fwww.inscription.tn%2F"><img alt="Twitter" src="/ORegMx/images/wpzoom24/twitter.png"></a> 
            <!--  <a href="#" target="_blank"><img src="/ORegMx/images/wpzoom24/rss.png" alt="Rss"></a>  --> 
        </div>


    </div>
</div>

<div class="content">
    <div id="under_top">

        <div id="logo"><p><a href="/"> <img border="0" alt="logo inscription" src="/ORegMx/images/logo.png"></a></p></div>

    </div>
</div>




<table width="762" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="troisbords">

        <tr> 
          <td valign="top"><!-- InstanceBeginEditable name="principale" -->
            <table width="100%" border="0" cellpadding="5" cellspacing="0">
              <!--DWLayoutTable-->
              <tr>
                <td valign="top">
                    <table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="troisbords">

                      <tr>
                        <td height="18" >








                          <TABLE align=center bgColor="white" border=0 cellPadding=5 
            cellSpacing=1 width="100%">
                            <tr>
                              <td align="right"><a style="text-decoration:none" href="/ORegMx/quitter.jsp" class="texte"><h4 class="logout">Déconnexion</h4></a></td>
                            </tr>
                        </table>

                        <table>
                        <tr>
                        <td>
                        <div id="banner">
                            <div id="Bleft">&nbsp;</div>
                            <div id="Bmiddle">
                                <div class="moduletable">

                                    <table border="0" width="810" cellpadding="0" cellspacing="0">
                                    <tbody>
                                    <tr>
                                        <td>
                                         <div class="parmCase">
                                            <h3>Nom & Pr&eacute;nom</h3>
                                            <p>USER_NAMEXXX&nbsp;</p>
                                         </div>
                                        </td>

                                        <td align="right">
                                         <div class="parmCase" style="float:right">
                                            <h3> الإسم و اللقب </h3>
                                            <p>&nbsp;</p>
                                         </div>
                                        </td>
                                    </tr>

                                    <tr class="tow">
                                        <td>
                                         <div class="parmCase">
                                            <h3>Etablissement</h3>
                                            <p>INSTITUT SUPERIEUR DES ETUDES TECHNOLOGIQUES DE SFAX</p>
                                          </div>
                                        </td>

                                        <td align="right">
                                         <div class="parmCase" style="float:right">
                                            <h3>المؤسسة الجامعية</h3>
                                            <p>المعهد العالي للدراسات التكنولوجية صفاقس</p>
                                         </div>
                                        </td>
                                    </tr>

                                    <tr>
                                        <td colspan="3" align="center"><a class="valid_cin" class="texte" href="/ORegMx/quitter.jsp">Déconnexion</a></td>
                                    </tr>
                                    </tbody>
                                    </table>

                                </div>
                            </div>
                            <div id="Bright">&nbsp;</div>
                        </div>
                      </td>
                      </tr>

                      </table>

                        <blockquote style="display: none;"/>
                          <p>Dans cet espace vous pouvez proc&eacute;der directement au paiement des frais d'inscription (<a href="/ORegMx/ListeInscriptions.jsp?Idsession=E90ECF9E6654E56AD13B19533ECB79A8&urlRetour=paiement" class="menulink" >
                            <img src="/ORegMx/images/carte_edinar.gif" width="29" height="14" border="0"></a>), consulter et mettre &agrave; jour vos donn&eacute;es personnelles (<a href="#" class="menulink" onclick=submitAction('toInfoPerson','E90ECF9E6654E56AD13B19533ECB79A8') >
                            <img src="/ORegMx/images/ORegMx/navbar1.gif" alt="Gestion des étudiants" width="18" height="18" border="0"></a>) et afficher les re&ccedil;us de vos paiements pass&eacute;s (
                            <a href="#" class="menulink" onclick="submitAction('goRecu','E90ECF9E6654E56AD13B19533ECB79A8')">
                                <img src="/ORegMx/images/ORegMx/navbar14.gif" alt="Inscriptions" width="17" height="19" border="0"></a>). 
                                Vous pouvez aussi acc&eacute;der &agrave; la liste des r&eacute;sultats(<a href="#" class="menulink" onClick="submitAction(" gorecu="" E90ECF9E6654E56AD13B19533ECB79A8>
                                <img width="17" height="19" border="0" src="/ORegMx/images/haut_parleur.jpg" alt="Inscriptions"></a>).<br>
                            <br>
                          </p>
                        </blockquote>

                        <FORM name="form"  method="POST" action="/ORegMx/servlet/AuthentificationEtud">
                            <input type="hidden" name="action1" >
                            <input type="hidden" name="cin" value="xxxxxxxx">
                            <input type="hidden" name="Idsession" value="E90ECF9E6654E56AD13B19533ECB79A8">
                            <input type="hidden" name="typeAction" value="nouv_inscription">


                        <div class="bureau_box">
                        <table border="0" width="100%">
                        <tr>
                            <td class="mbox">
                                <div class="sub-hero-ionic-adidas" style="text-align: center;">
                                    <span class="sub-text-wrapper">
                                        <a href="/ORegMx/ListeInscriptions.jsp?Idsession=E90ECF9E6654E56AD13B19533ECB79A8&urlRetour=paiement">
                                        <i class="fa fa-credit-card-alt icon-fa-dashoboard" aria-hidden="true"></i> 
                                        <br>
                                        <!--  h4>Paiement</h4-->                                        
                                            <p class="sub-shop-button">Paiement
                                                <!--  i class="fa fa-arrow-circle-right" aria-hidden="true"></i -->
                                            </p>
                                        </a>
                                    </span>
                                </div>
                            </td>
                            <td class="mbox">
                                <div class="sub-hero-ionic-adidas" style="text-align: center;">
                                    <span class="sub-text-wrapper">
                                        <a href="#" onclick="submitAction('toInfoPerson','E90ECF9E6654E56AD13B19533ECB79A8')">
                                        <i class="fa fa-user-circle icon-fa-dashoboard" aria-hidden="true"></i>
                                        <br>
                                        <!--  h4>Informations</h4 -->                                       
                                            <p class="sub-shop-button">Informations</p>
                                        </a>
                                    </span>
                                </div>
                            </td>
                            <td class="mbox">
                                <div class="sub-hero-ionic-adidas" style="text-align: center;">
                                    <span class="sub-text-wrapper">
                                        <a href="#" onclick="submitAction('toCarteEtd','E90ECF9E6654E56AD13B19533ECB79A8')">
                                        <i class="fa fa-id-card-o icon-fa-dashoboard" aria-hidden="true"></i>
                                        <br>
                                        <p class="sub-shop-button">Carte Etudiant</p></a>
                                        <a href="#" onclick="submitAction('toCarteEtd2','E90ECF9E6654E56AD13B19533ECB79A8')">&nbsp;</a>
                                    </span>
                                </div>
                            </td>
                        </tr>
                        <tr>
                            <td class="mbox">
                                <div class="sub-hero-ionic-adidas" style="text-align: center;">
                                    <span class="sub-text-wrapper">
                                        <a href="#" onclick="submitAction('goResultat','E90ECF9E6654E56AD13B19533ECB79A8')">
                                        <i class="fa fa-graduation-cap icon-fa-dashoboard" aria-hidden="true"></i>
                                        <br>
                                        <!--  h4>Résultats</h4 -->                                      
                                        <p class="sub-shop-button">Résultats
                                                <!--  i class="fa fa-arrow-circle-right" aria-hidden="true"></i -->
                                            </p>
                                            </a>
                                    </span>
                                </div>
                            </td>
                            <td class="mbox">
                                <div class="sub-hero-ionic-adidas" style="text-align: center;">
                                    <span class="sub-text-wrapper">
                                        <a href="#" onclick="submitAction('toOffice365','E90ECF9E6654E56AD13B19533ECB79A8')">
                                        <i class="fa fa fa-globe icon-fa-dashoboard" aria-hidden="true"></i>
                                        <br>
                                        <!--  h4>Votre compte office 365</h4-->
                                        <p class="sub-shop-button">Office 365
                                                <!--  i class="fa fa-arrow-circle-right" aria-hidden="true"></i-->
                                            </p>
                                            </a>
                                    </span>
                                </div>
                            </td>
                            <td class="mbox">
                                <div class="sub-hero-ionic-adidas" style="text-align: center;">
                                    <span class="sub-text-wrapper">
                                        <a href="#" onclick="submitAction('goRecu','E90ECF9E6654E56AD13B19533ECB79A8')">
                                        <i class="fa fa-print icon-fa-dashoboard" aria-hidden="true"></i>
                                        <br>
                                        <!--  h4>Vous avez 1 reçus (+0 archive)</h4-->
                                            <p class="sub-shop-button">Mes Reçus</p> <br>
                                            <p>(1 reçus (+2 archive))
                                                <!--  i class="fa fa-arrow-circle-right" aria-hidden="true"></i--></p>
                                        </a>
                                    </span>
                                </div>
                            </td>
                        </tr>
                        </table>
                        </div>






                        </FORM>
                        <p>

                        </p>

                         </td>
                      </tr>
                    </table>
                  <br>
                    <br>
                    <br>
                </td>
              </tr>
            </table>
          <!-- InstanceEndEditable --></td>
        </tr>

<link type="text/css" href="/ORegMx/footer.css" rel="stylesheet" />

<div class="content">   
        <table border="0" align="center">
        <tbody>
        <tr>
        <td>
        </td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        </tr>
        </tbody>
        </table>

</div> 
<div id="footer">
  <p>Copyright &copy; Minist&egrave;re de l'Enseignement Sup&eacute;rieur et de la Recherche Scientifique - Tunisie</p>
</div>
<div align="center">  <p>      <span class="texte"> 
                            <a href="http://www.progress.com.tn" target="_blank" ><img src="/ORegMx/images/powered.gif" width="110" height="30" border="0"></a><br>
                            Portail bas&egrave; sur un produit de <a href="http://www.progress.com.tn" target="_blank" >Progress Engineering</a>
                            </span> </p>
        </div>

        <tr valign="middle"> 
          <td height="40"> <div align="center" class="texte">
          <!-- #BeginLibraryItem "/Library/performance.lbi" --><div align="center">

  Requ&ecirc;te trait&eacute;e en  <b>16</b> millisecondes / Page g&eacute;n&eacute;r&eacute;e en <b>0</b> millisecondes</div>
<!-- #EndLibraryItem --></div></td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
<!-- InstanceEnd --></html>


标签: javahttpclient

解决方案


WebDriver API 不提供对 HTTP 状态的访问。在How to get HTTP Response Code using Selenium WebDriver中有一篇关于获取此信息的原因和选项的冗长帖子

您可以在提交调用后使用 WebDriver API 检查结果。在此网站上查找错误页面特有的元标记和页面元素。通过 findElement 调用,您可以确保它们存在于结果页面中。

在这种特殊情况下,服务器似乎只是再次提供相同的表单。您可以从上面重复使用您的电话。

在有效登录的结果页面中,您可以通过其类名“logout”找到注销链接。如果 webdriver 找不到该元素,则您的登录尝试失败。

    try {
      WebElement logout = driver.findElement(By.className("logout"));
    } catch (NoSuchElementException e) {
      // you are not logged in
    }

推荐阅读