'dan birden çok "Set-Cookie" üstbilgisini alma Programatik olarak Yahoo geliştirici API'sine oturum açmaya çalışıyorum. HttpWebResponse'nin tüm "Set-Cookie" başlıklarına erişemediğim bir engelle karşılaştım.Bir HttpWebResponse
:Set-Cookie: B=733jjvp7f5g8f&b=4&d=1pFN8bVpYFYaPUme88.fc6ZzTSI-&s=kc&i=.1p3Ei3yvwqZjo0gcg7D; expires=Sun, 22-Dec-2013 05:33:04 GMT; path=/; domain=.yahoo.com
Set-Cookie: F=a=GYsABKAMvTZoTcNAPKUXrclX_Hb77EA7I_62nONz8QeEwNevHwqJ_NyizED88uhv9aMx.9o-&b=3tN5; expires=Sun, 22-Dec-2013 05:33:04 GMT; path=/; domain=.yahoo.com
Set-Cookie: Y=v=1&n=0v251rt3ifppb&l=0kii84if0h70ma/o&p=m2fvvau012000000&iz=1111&r=if&lg=en-AU&intl=au&np=1; path=/; domain=.yahoo.com
Set-Cookie: PH=fn=jW23i4lnq1UpiP.lsuU-&l=en-AU; expires=Sun, 22-Dec-2013 05:33:04 GMT; path=/; domain=.yahoo.com
Set-Cookie: T=z=QEs8OBQYTBPBEZq31nTCqv1MzNPBjUwTjcwMDZOTjY-&a=YAE&sk=DAAtoxgrYmWIMk&ks=EAA3Ha0H7qyCT8P3cI9NWJrIA--~E&d=c2wBTkRRNEFUSTNPVEEzTnpFNU9URS0BYQFZQUUBZwFCRFZQTkRSSjJQRVRDTEdFT0xCQ1hER0VVUQFvawFaVzAtAXRpcAF2MkNUVUEBenoBUUVzOE9CQTdF; path=/; domain=.yahoo.com
Set-Cookie: SSL=v=1&s=kTc532PQYAe1iT.23Q55E50ZdoOAdEK_fshc3g_YZ3SxszcbuHkmpJUAQ7RT67nDNA0nXyX68um90ZuS9RQztQ--&kv=0; path=/; domain=.yahoo.com; secure; httponly
Ancak, .NET aracılığıyla "Cookie" ilk örneği ötesinde bir şey erişemiyorsam:
Fiddler yanıtının başlığında aşağıdaki çerez bana gösteriyor
// Make the web request:
var userAuthWebRequest = WebRequest.Create(uri) as HttpWebRequest;
var response = userAuthWebRequest.GetResponse() as HttpWebResponse;
// Dump the headers to debug:
Debug.WriteLine(string.Format("Set-Cookie: {0}", response.Headers.Get("Set-Cookie")));
Benim ayıklama çıkışı döner: İlginç
Set-Cookie: B=733jjvp7f5g8f&b=3&s=b1; expires=Sun, 22-Dec-2013 05:33:03 GMT; path=/; domain=.yahoo.com
, ben He benzer bir istek yaparsanız aders.GetValues, aslında yukarıda birlikte birleştirilmiş gibi görünmesinin "Set-Cookie" başlığı iki örneğini döndürür:
foreach (var headerName in response.Headers.AllKeys)
{
foreach (var values in response.Headers.GetValues(headerName))
{
Debug.WriteLine("{0}: {1}", headerName, values);
}
}
Çıktı: Birkaç diğer gördüğüm
Set-Cookie: B=733jjvp7f5g8f&b=3&s=b1; expires=Sun
Set-Cookie: 22-Dec-2013 05:33:03 GMT; path=/; domain=.yahoo.com
Ham üstbilgileri onaylayan sorular HttpWebResponse nesnesi aracılığıyla kullanılamaz ve bir priz çözümü kullanarak araştırmam gerekir. Bununla ilgili herhangi bir şansım olup olmadığını görmek için FiddlerCore'a göz atmak üzereyim, ama başka herhangi bir işaretçi varsa, onları görmeyi çok isterim.
Teşekkürler!
Şerefe. Bu tavsiye, istek/yanıt nesnelerine yeniden bakmamı sağladı. İlk bakışta gördüğüm 200 yanıttan önce üç adet 302 otomatik yönlendirme yanıtı aldığımı ortaya koyuyor. Çerezler ilk 302 cevabındaydı, ama son cevapta değil, bu yüzden onları daha önce görmedim. İlk istekte "AllowAutoRedirect = false" ayarının yapılması hile yaptı, böylece 302 cevabındaki çerezleri düzgün bir şekilde işleyebilirim. – Dakkith
@Dakkith - Yönlendirmeyi, 'AllowAutoRedirect' özelliğini HttpWebRequest nesnesinde false olarak ayarlamak, yanıtlayan kişinin Durum kodunu kontrol etmek ve bir yönlendirme ise, ilk isteğinizi 'konum' başlığı tarafından belirtilen adrese yeniden göndererek el ile ele alabilirsiniz. Yanıtın –