سؤال

أريد الوصول إلى النماذج الموجودة على صفحات HTML كلمات برمجة Java دون إشراك متصفح حقيقي بينهما.

في الوقت الحاضر أنا أفعل ذلك من خلال وحدة HTML ولكن يستغرق وقتا طويلا لتحميل صفحة. عندما يتعلق الأمر بالوصول إلى ملايين الصفحة، فإن هذا الوقت الإضافي هذا يهم أكثر.

هل هناك أي طرق أخرى للقيام بذلك؟

هل كانت مفيدة؟

المحلول

لقد استخدمت شيئا مشابها httpUnit من قبل، لكن ليس لدي أي فكرة عن كيفية مقارنة الأداء الحكيم.

إذا كان لديك ملايين الصفحات المعالجة، فسوف أوصي بإلقاء المزيد من المواضيع في ذلك. مجرد تخمين، لكنني أعتقد أنه إذا قمت بتوسيع نطاق هذا الأمر إلى مؤشرات الترابط متعددة، فسوف تنفد من النطاق الترددي قبل نفاد قوة وحدة المعالجة المركزية (في هذه الحالة، لن يهم مقدار أسرع ذلك)

نصائح أخرى

الوصول إلى صفحة ويب باستخدام متصفح، حتى htmlunit، سيكون بطيئا. طريقة أفضل ل اختبار الطبقة أسفل واجهة الويب فقط, ، بحيث لا تحتاج إلى الوصول إلى الملايين من الصفحات - بدلا من ذلك، يمكنك اختبار ما يكفي للتأكد من أن واجهة الويب تستخدم الطبقة السفلى بشكل صحيح.

معظم التفاعل في المتصفح يأتي لأسفل إلى الحصول على HTTP أو وظيفة 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