0

我正在使用可识别 cookie 的 Web 客户端

public class CookieAwareWebClient : WebClient
{

    public CookieContainer m_container = new CookieContainer();

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).CookieContainer = m_container;
        }
        return request;
    }

    public CookieCollection Cookies(Uri domain)
    {
        return m_container.GetCookies(domain);
    }
}

并向一个网站发出一些请求,该网站会像这样丢弃一组 cookie

webClient.Cookies(new Uri("http://<domain>.com")).Cast<Cookie>().ToArray()

{System.Net.Cookie[7]}
    [0]: {UsrLocale=en_CA}
    [1]: {Country=CA}
    [2]: {$Version=1; ca_ord="UJMupexgTADsaH1yNi9eyA=="; $Path=/; $Domain=.<domain>.com}
    [3]: {isLoggedin=false}
    [4]: {cartCount=1}
    [5]: {userPrefLanguage=en_CA}

下一个请求没有按预期工作,当我查看提琴手时,我看到 cookie[2] 尚未添加到标题中。从外观上看,这一点非常重要。有谁知道为什么它不会被添加到请求中?所有其他人都可以正常弹出,并且我正在向其发出请求的域是 cookie 中列出的域的子域,即 subDomain..com

var domain = new Uri("http://domain.com");
                    var webClient = new CookieAwareWebClient();
                    webClient.OpenRead("http://sub.domain.com");
                    webClient.RefreshCookies(domain);
                    webClient.UploadValues("http://sub.domain.com/browse/submit.jsp", new NameValueCollection
                        {
                            {"productId","prod610181"},
                            {"skuId","3431733"},
                            {"quantity","1"},
                            {"page","MAIN"}
                        });
                    webClient.RefreshCookies(domain);
                    webClient.OpenRead("http://sub.domain.com/shopping/bag.jsp");
                    webClient.RefreshCookies(domain);
                    var order = webClient.Cookies(new Uri("http://domain.com")).Cast<Cookie>().ToArray();
4

0 回答 0