ما هي الطريقة الصحيحة لتعيين الرؤوس في URLConnection؟

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

  •  11-07-2019
  •  | 
  •  

سؤال

الكود الخاص بي هو كما يلي:

URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);         
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent", 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();

هل من المقبول أن أقوم بتعيين الرؤوس قبل أن أحصل على ملف InputStream؟هل سيتم إرسال رأسي أم سيرى الخادم الإعداد الافتراضي URLConnectionوكيل المستخدم (إن وجد)؟

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

المحلول

الرؤوس يجب يتم تعيينها قبل الحصول على InputStream أن يكون لها أي تأثير - و IllegalStateException سيتم طرحه إذا كان الاتصال مفتوحًا بالفعل.

بعيد مثل ال User-Agent head على وجه التحديد، يجب إرساله إذا تم تعيينه.

انظر URLConnection JavaDoc.

نصائح أخرى

للرد على السؤال، رمز هو الصحيح. getInputStream لحظة ()، يتم إرسال الحصول HTTP إلى الملقم الهدف.

وA الجانبية مذكرة إلى وكيل مستخدم، إذا لم يكن لتعيينها، URLConnection سوف ترسل الافتراضي واحد على أي حال، وهي:

User-Agent: Java/1.6.0_24 (varies depending on your java version)

وأنصح بعدم استخدام يبني على مستوى منخفض مثل URLConnection. هناك الكثير من المكتبات لإرسال طلبات HTTP، مع كونه عميل أباتشي HTTP الأبرز.

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