# \[Java\] communiquer avec une CGI

**URL:** <https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 11:11 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320 "2016-02-21T11:11:28Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![blaisoth](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/90db22/32.png) [@blaisoth](https://www.debian-fr.org/u/blaisoth)\
**Post date:** [Février 21, 2016, 11:11 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320/1 "2016-02-21T11:11:28Z")

</div>

Bonjour, j’ai trouvé un code ici : [http://www.exampledepot.com/egs/java.net/auth.html](http://www.exampledepot.com/egs/java.net/auth.html) mais il me renvoie la même page quel que soit le mot de passe, correct ou non.

[code]Code :  
import [java.io](http://java.io)._;  
import [java.net](http://java.net)._;  
public class chot {  
/\*\*

- @param args  
\*/  
public static void main(String[] args) {  
// TODO Auto-generated method stub  
// Install the custom authenticator  
Authenticator.setDefault(new MyAuthenticator());  
// Access the page  
try {  
// Create a URL for the desired page  
URL url = new URL(“[https://www.creditmutuel.fr/cmne/fr/banque/situation\_financiere.cgi](https://www.creditmutuel.fr/cmne/fr/banque/situation_financiere.cgi)” );  
// Read all the text returned by the server  
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));  
String str;  
while ((str = in.readLine()) != null) {  
System.out.println(str);  
// str is one line of text; readLine() strips the newline character(s)  
}  
in.close();  
} catch (MalformedURLException e) {  
} catch (IOException e) {  
}  
}  
}  
import java.net.Authenticator;  
import java.net.InetAddress;  
import java.net.PasswordAuthentication;  
public class MyAuthenticator extends Authenticator {  
// This method is called when a password-protected URL is accessed  
protected PasswordAuthentication getPasswordAuthentication() {  
// Get information about the request  
String promptString = getRequestingPrompt();  
String hostname = getRequestingHost();  
InetAddress ipaddr = getRequestingSite();  
int port = getRequestingPort();  
// Get the username from the user…  
String username = “0290012345678”;  
// Get the password from the user…  
String password = “87654321”;  
// Return the information  
return new PasswordAuthentication(username, password.toCharArray());  
}  
}[/code]  
Pouvez-vous me dire pourquoi ?

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 11:11 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320/2 "2016-02-21T11:11:34Z")

</div>

Je découvre la classe Authenticator.  
C’est intéressant bien que trop http-centré (pouvoir gérer le SSL avec ça serait terrible).

Quand tu tente avec curl ou wget tu es obligé d’utiliser un mot de passe pour y accéder à cette page ?

---

<div class="post-metadata">

**Author:** ![blaisoth](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/90db22/32.png) [@blaisoth](https://www.debian-fr.org/u/blaisoth)\
**Post date:** [Février 21, 2016, 11:11 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320/3 "2016-02-21T11:11:40Z")

</div>

` wget -O /home/eric/Bureau/banque2 --http-user=0290012345678 --http-passwd=87654321 https://www.creditmutuel.fr/cmne/fr/banque/situation_financiere.cgi` renvoie la même page, celle d’identification ([creditmutuel.fr/cmne/fr/ide … efault.cgi](https://www.creditmutuel.fr/cmne/fr/identification/default.cgi))

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 11:11 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320/4 "2016-02-21T11:11:41Z")

</div>

Il me semble que cette page n’tuilise pas une authentification HTTP. C’est des paramètres POST qui sont envoyés et reconnus par leur cgi.

Edit : Je te propose d’aller voir les gens de [weboob.org/](http://weboob.org/) (c’est des francophones !) qui sont habitués à bypasser des pages d’authentification et qui pourraient t’en dire plus (même si eux ils font du python).

---

<div class="post-metadata">

**Author:** ![blaisoth](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/90db22/32.png) [@blaisoth](https://www.debian-fr.org/u/blaisoth)\
**Post date:** [Février 21, 2016, 11:14 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320/5 "2016-02-21T11:14:15Z")

</div>

Pour communiquer avec la CGI, j’ai trouvé ça :

`URL my_url = new URL("http://www.cgi-host.com/");
URLConnection connection = my_url.openConnection(); 
connect.setDoOutput(true);
PrintStream send_data = newPrintStream(connection.getOutputStream());
send_data.print("input1=value1\n\n");
send_data.close( );` ici [http://www.webdeveloper.com/java/java\_meets\_cgi.html](http://www.webdeveloper.com/java/java_meets_cgi.html)

Mais je ne trouve pas dans la source de la page le nom des variables à envoyer. D’où ma question :

- faut-il que j’apprenne le HTML ou quoi d’autre encore pour m’en sortir (je veux naviguer sur mon site bancaire avec java) ?

---

<div class="post-metadata">

**Author:** ![blaisoth](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/90db22/32.png) [@blaisoth](https://www.debian-fr.org/u/blaisoth)\
**Post date:** [Février 21, 2016, 11:43 UTC](https://www.debian-fr.org/t/java-communiquer-avec-une-cgi/52320/6 "2016-02-21T11:43:49Z")

</div>

Merci MisterFreez, Weboob propose une solution toute faite mais je veux le faire moi-même. Ils m’ont répondu mais il me faut quelqu’un qui connaît java. Je continue le fil ici : [https://www.debian-fr.org/envoi-de-post-a-cgi-en-java-t38377.html](https://www.debian-fr.org/envoi-de-post-a-cgi-en-java-t38377.html)
