كيفية تحليل HttpWebResponse.رؤوس.مفاتيح تعيين ملف تعريف الارتباط معرف جلسة عاد

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

سؤال

أحاول خلق HttpWebRequest/HttpWebResponse الدورة مع ASP.NET الموقع في وقت لاحق تحليل نموذج HTML من خلال url params (هذا الجزء أعرف كيف أفعل), ولكن أنا لا أفهم كيفية تحليل و تعيين ملف تعريف الارتباط مثل معرف جلسة العمل.في العابث ، فإنه يدل على أن ASP.NET معرف جلسة العمل يتم إرجاعها من خلال تعيين ملف تعريف الارتباط في الاستجابة إلى طلب / مسار url ، ولكن كيف يمكن استخراج هذه الدورة id وتعيينه الكعكة القادمة HttpWebRequest?أنا أفهم أن هذا رأس تعيين ملف تعريف الارتباط من شأنه أن يمكن العثور عليها في HttpWebResponse.رؤوس.مفاتيح, ولكن هل هناك طريق مباشر إلى تحليل ذلك ؟ وذلك بفضل!

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

المحلول

على .NET framework سوف إدارة ملفات تعريف الارتباط لك.ليس لديك إلى القلق نفسك مع تحليل معلومات ملف تعريف الارتباط من رؤوس أو إضافة ملف تعريف الارتباط رأس الطلبات الخاصة بك.

لتخزين وإرسال الخاص بك معرف جلسة العمل استخدام Cookie و CookieContainer دروس لتخزينها ومن ثم تأكد من إرسال ملفات تعريف الارتباط الخاصة بك مع كل طلب.

يظهر المثال التالي كيفية القيام بذلك.على CookieContainer, 'cookieJar'يمكن أن تكون مشتركة عبر مجالات متعددة و الطلبات.بمجرد إضافة إلى طلب وجوه الإشارة إلى أنه سيتم أيضا إضافة إلى استجابة الكائن عندما يتم إرجاع استجابة.

CookieContainer cookieJar = new CookieContainer();

var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;

var response = request.GetResponse();

foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
{
    Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
}

الناتج من هذا القانون:

Cookie['PREF']: ID=59e9a22a8cac2435:TM=1246226400:LM=1246226400:S=tvWTnbBhK4N7Tlpu

نصائح أخرى

والجواب من دان هربرت ساعدتني حقا. وأنا أقدر مساعدتكم.

ونريد فقط أن الرد على استخدامي - آمل أن يساعد بعض واحد في نقطة معينة من الزمن. متطلباتي هو أنني في حاجة الى ارسال ظهر الكوكيز من اول رد http: // بعد إلى http: // بعد الثاني الطلب.

1:

CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
....

CookieCollection setCookies = cookieJar.GetCookies(request.RequestUri);

2:

CookieContainer cc = new CookieContainer();
cc.Add(setCookies);    
request.CookieContainer = cc;

ولدي نفس المشكلة (مع الأمازون) يمكنني استخدام التعبير العادي التالي:

string regexp = "(?<name>[^=]+)=(?<val>[^;]+)[^,]+,?";);
MatchCollection myMatchCollection = Regex.Matches(cookiesStr, regexp);
foreach (Match myMatch in myMatchCollection)
{
string cookieName = myMatch.Groups["name"].ToString();
string cookieVal = myMatch.Groups["val"].ToString();
Cookie cookie = new Cookie(cookieName, cookieVal);
cookies.Add(cookie);
}

لاحظ أن ما يهمني هو اسم ملف تعريف الارتباط / قيمة ...

وحظا سعيدا إيليا

وهمهمة قد أكون مخطئا ولكن من ما أنا مراقبة في الآونة الأخيرة

وملفات تعريف الارتباط من الاستجابة الأولى، لا تشمل "كوكي مجموعة 'ملفات تعريف الارتباط التي تأتي في رأس (على سبيل المثال بعض معرف جلسة ...) في حالة وجود 302 (إعادة توجيه) حالة

إذا تم تعيين autofollowredirect إلى true، ثم تتم معالجة ملفات تعريف الارتباط مجموعة، وطلب لاحق والتي تتم بشكل تلقائي، وسوف تشمل هذه الكعكات التي حددتها مجموعة الكعكة على المكالمة الأولى

إذا تم تعيين autofollowredirect إلى false ثم أول طلب لا تحصل على الكوكيز positionned من الكعكة مجموعة، وأعتقد، وهذا هو أيضا بلدي queston إذا كان أي شخص يعرف، أن الطريقة الوحيدة لاحقا تلك الكوكيز في الطلب التالي ، هو تحليل مجموعة الكوكيز؟

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