[Java] communiquer avec une CGI

Bonjour, j’ai trouvé un code ici : 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.;
import 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” );
    // 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 ?

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 ?

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)

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/ (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).

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

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) ?

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