Question

Je veux accéder à des formulaires sur les pages Html throught langage de programmation Java sans impliquer navigateur réel entre les deux.

À l'heure actuelle, je le fais par HTML UNITÉ mais il faut un peu plus de temps pour charger une page . En ce qui concerne l'accès à des millions de pages, alors ce temps peu plus le plus important.

Y at-il d'autres méthodes pour le faire?

Était-ce utile?

La solution

Je l'ai utilisé quelque chose de similaire appelé HTTPUnit avant, mais je ne sais pas comment il se compare sage performances .

Si vous avez des millions de pages à traiter, je recommande de jeter un peu plus de fils à elle. Juste une supposition, mais je pense que si vous redimensionnez ce à plusieurs threads, vous serez à court de bande passante avant de manquer de puissance CPU (dans ce cas, il ne sera pas d'importance combien plus vite il pourrait être)

Autres conseils

Accès à une page Web en utilisant un navigateur, même HtmlUnit, va être lente. Une meilleure méthode consiste à la couche juste au-dessous de l'interface Web , de sorte que vous n'avez pas besoin d'accéder à des millions de pages -. au lieu de tester suffisamment pour vous assurer que l'interface Web utilise la couche inférieure correctement

La plupart des interactions dans le navigateur revient à une requête HTTP GET ou HTTP POST. Vous devez savoir exactement l'opération dont vous avez besoin, et vous pouvez construire l'URL et / ou des données de formulaire. Ensuite, vous pouvez utiliser quelque chose comme ceci:

   try { 
    //Construct data 
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); 
    // Send data 
    URL url = new URL("http://hostname:80/cgi"); 
    URLConnection conn = url.openConnection(); conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; while ((line = rd.readLine()) != null) { 

    // Process line... } 
    wr.close(); 
    rd.close(); 
    } catch (Exception e) { } 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top