هل هناك طريقة لتحديد ما إذا كان توجيه occurrs خلال WebRequest?

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

سؤال

أنا باستخدام HttpWebRequest لكشط Wikipedia.org.في الكثير من الأحيان سوف يكون هناك روابط المواضيع على الصفحة التي تم الموحدة وبالتالي فإنها توجيهك إلى الصفحة الصحيحة.

على سبيل المثال

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)

الموجهات لك إلى تصحيح الموضوع

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)

إشعار إضافة كلمة "إن".

أريد أن تحدد في هذه المرحلة ما إذا كان أو لم يكن توجيه حدث.يمكن لأي شخص أن يقترح كيف يمكن فعل هذا ؟

وذلك بفضل!

التحديث

لقد شهد استجابة أدناه كما أجاب لأنه تقنيا هذا كيف يمكنك معرفة إذا كان قد تم توجيهك.المشكلة أواجه هو ويكيبيديا ليست في الواقع تفعل من الصعب إعادة توجيه مع رموز استجابة http 3xx.يفعلون لينة الموجهات الذي يقدم المحتوى المختلفة تحت نفس العنوان.يجب أن تجد حلا آخر.

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

المحلول

جرب هذا:

if(reponse.ResponseUri != request.RequestUri) {
    //You were redirected
}

نصائح أخرى

هناك خاصية تسمى "AllowAutoRedirects"على HttpWebRequest الكائن.إذا كنت إيقاف ذلك يمكنك متابعة الموجهات نفسك.

هل يمكن أيضا محاولة التحقق من HttpWebResponse.ResponseUri.

استخدام HttpWebRequest.عنوان الملكية صراحة بأنها "URI بعد أي إعادة توجيه التي تحدث أثناء الطلب كاملة"

لاحظ أن هذا ينبغي أن تستخدم بدلا من مماثلة HttpWebResponse.ResponseUri, كما وثائقها يقول:

التطبيقات التي تحتاج إلى الوصول إلى الماضي توجيه ResponseUri يجب استخدام HttpWebRequest..::..عنوان الملكية بدلا من ResponseUri ، لأن استخدام ResponseUri الملكية قد فتح الأمن نقاط الضعف.

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