كيفية استرداد صفحة HTML في الترميز السليم باستخدام Java؟

StackOverflow https://stackoverflow.com/questions/1255730

  •  12-09-2019
  •  | 
  •  

سؤال

كيف يمكنني قراءة دفق HTTP مع صفحة HTML في ترميز الصفحة؟

فيما يلي شظية التعليمات البرمجية التي أستخدمها للحصول على دفق HTTP. inputstreamreader. لديه ترميز حجة اختيارية، ولكن ليس لدي أي أفكار حول طريقة الحصول عليها.

URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader d = new BufferedReader(new InputStreamReader(is));
هل كانت مفيدة؟

المحلول

استرجاع صفحة الويب عملية معقدة بشكل معقول. هذا هو السبب في أن المكتبات مثل httpclient. يخرج. نصيحتي هي أنه ما لم يكن لديك سبب مقنع حقا خلاف ذلك، استخدم HTTPClient.

نصائح أخرى

عند إنشاء الاتصال من خلال

urlconnection conn = url.openconnection ()؛

يمكنك الحصول على اسم طريقة الترميز من خلال URL.getContEncoding () لذلك قم بتمرير هذه السلسلة إلى InputStreamReader () حتى يشبه الرمز

bufferedreader d = جديد bufferedreader (inputstreamreader (INPUTSTREAMREADER (IS، URL.GetContentEncoding ()))؛

الجواب القصير هو urlconnection.getContentEncoding (). وبعد الجواب الصحيح هو ما يقترح كلطوس، استخدم مكتبة طرف ثالثة مناسبة إلا إذا كان لديك سبب مقنع لعدم.

كان لدي مشكلة مماثلة للغاية لحلها مؤخرا. مثل الإجابات الأخرى، بدأت أيضا اللعب مع HTTPClient et al. ومع ذلك، فإن هذه المكتبات تتطلب معرفة مقدمة من ترميز الملف الذي تريد تنزيله. خلاف ذلك، سيؤدي تحويل ملف HTML المسترجع إلى أحرف غير قابلة للقراءة.

لن يعمل هذا النهج، لأن ترميز ملف HTML محدد فقط في ملف HTML نفسه. اعتمادا على إصدار HTML، يتم تحديد الترميز في العديد من الطرق المختلفة مثل رأس XML، وعناصر علامات تاو رئيسة مختلفة، إلخ. إذا اتبعت هذا النهج، فستحتاج إلى:

  1. قم بتنزيل الملف وإلقاء نظرة على المحتوى لمعرفة الترميز عن طريق تحليل محتوى HTML.
  2. قم بتنزيل الملف مرة ثانية لتحديد الترميز المناسب.

خاصة تحليل محتوى HTML للحصول على سلاسل الترميز السليم هو عرضة للخطأ. بدلا من ذلك، أقترح عليك الاعتماد على مكتبة مثل jsoug., ، والتي سوف تفعل الوظيفة لك. لذلك بدلا من تنزيل الملف عبر httpclient، استخدم JSOV لاسترداد الملف المناسب لك. بالإضافة إلى ذلك، توفر JSOP API لطيفة للوصول إلى أجزاء مختلفة من صفحة HTML مباشرة (مثل عنوان الصفحة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top