java - 如何让 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&t="><img alt="Facebook" src="/ORegMx/images/wpzoom24/facebook.png"></a>
<a target="_blank" href="http://twitter.com/share?text=&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"> </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énom</h3>
<p>USER_NAMEXXX </p>
</div>
</td>
<td align="right">
<div class="parmCase" style="float:right">
<h3> الإسم و اللقب </h3>
<p> </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"> </div>
</div>
</td>
</tr>
</table>
<blockquote style="display: none;"/>
<p>Dans cet espace vous pouvez procé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 à jour vos donné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çus de vos paiements passé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éder à la liste des ré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')"> </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 © Ministère de l'Enseignement Supé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è 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ête traitée en <b>16</b> millisecondes / Page générée en <b>0</b> millisecondes</div>
<!-- #EndLibraryItem --></div></td>
</tr>
</table></td>
</tr>
</table>
</body>
<!-- InstanceEnd --></html>
解决方案
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
}
推荐阅读
- docker - 将 docker cli bash 命令转换为 api 以供外部应用程序在生产中使用的最安全方法
- mongoose - 猫鼬响应的对象属性未定义
- c - 未定义对函数文件错误 C 的引用(编译)
- c - 为什么空闲 CPU 没有分配给 linux 中的进程?
- javascript - 如何在电子应用程序中设置 Windows 缩略图工具栏
- c# - VR的自动拍摄脚本?(更改脚本)
- c# - Xamarin 自动启动应用程序的问题
- android - 如何将我的 aar 发布到 bintray 并防止用户看到源?
- r - 如何在分组的ggplot中使用包含颜色名称的变量来分配颜色?
- python - python奇数或偶数函数中的问题。返回 True 不起作用