문제

실제 브라우저를 포함하지 않고 HTML 페이지에서 Java 프로그래밍 언어를 통해 양식에 액세스하고 싶습니다.

현재 나는 그것을 통해 그것을하고있다 HTML 장치 그러나 페이지를로드하는 데 시간이 조금 더 걸립니다. 수백만 페이지에 액세스 할 때이 여분의 시간이 가장 중요합니다.

이 작업을 수행하는 다른 방법이 있습니까?

도움이 되었습니까?

해결책

나는 비슷한 것을 사용했습니다 httpunit 전에는 성능을 현명하게 비교하는 방법을 전혀 모른다.

처리 할 수백만 페이지의 페이지가 있다면 더 많은 스레드를 던지는 것이 좋습니다. 단지 추측하지만, 여러 스레드까지 확장하면 CPU 전원이 부족하기 전에 대역폭이 떨어질 것이라고 생각합니다 (이 경우 얼마나 빠를 수 있는지는 중요하지 않음).

다른 팁

브라우저, 심지어 htmlunit을 사용하여 웹 페이지에 액세스하면 느리게 진행됩니다. 더 나은 방법은 웹 인터페이스 바로 아래의 레이어를 테스트하십시오, 수백만 페이지에 액세스 할 필요가 없으므로 웹 인터페이스가 하단 계층을 올바르게 사용하고 있는지 확인하기에 충분히 테스트합니다.

브라우저의 대부분의 상호 작용은 HTTP Get 또는 HTTP 게시물로 내려집니다. 필요한 작업을 정확히 파악한 다음 URL 및/또는 양식 데이터를 구성 할 수 있습니다. 그런 다음 다음과 같은 것을 사용할 수 있습니다.

   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) { } 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top