как сделать несколько почтовых запросов с контейнерами cookie c # - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь сделать 2 почтовых запроса в одном сеансе, но второй всегда дает мне исходный код html домашней страницы ...

2 функции делают одно и то же: doотправьте запрос и добавьте его в контейнер cookie.В конце 2-й функции строка ответа отправляет мне исходную HTML-страницу домашней страницы, а не ту, которой я был раньше.Принимая во внимание, что responsesetring (когда я попробовал это прежде) в первом запросе отправляет мне хорошую исходную страницу html.

Вот мой код:

private CookieContainer cookieContainer;

private void SendRequest_add_to_cart(string url, string data_style_id, string size)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.ContentType = "application/x-www-form-urlencoded";
    request.Method = "POST";

    if (this.cookieContainer != null)
        request.CookieContainer = this.cookieContainer;
    else
        request.CookieContainer = new CookieContainer();

    var postData = "utf8=✓";
    postData += "style=" + data_style_id;
    postData += "size=" + size;
    postData += "commit=add to basket";
    var data = Encoding.ASCII.GetBytes(postData);

    request.ContentLength = data.Length;
    using (var stream = request.GetRequestStream())
    {
        stream.Write(data, 0, data.Length);
    }
    var response = (HttpWebResponse)request.GetResponse();
    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

    this.cookieContainer = request.CookieContainer;
}

private void SendRequest_checkout(string url)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.ContentType = "application/x-www-form-urlencoded";
    request.Method = "POST";

    if (this.cookieContainer != null)
        request.CookieContainer = this.cookieContainer;
    else
        request.CookieContainer = new CookieContainer();

    var postData = "utf8=✓";
    postData += "order[billing_name]=toto";
    postData += "order[email]=toto@gmail.com";
    var data = Encoding.ASCII.GetBytes(postData);

    request.ContentLength = data.Length;
    using (var stream = request.GetRequestStream())
    {
        stream.Write(data, 0, data.Length);
    }
    var response = (HttpWebResponse)request.GetResponse();
    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

    this.cookieContainer = request.CookieContainer;
    Console.WriteLine(responseString);
}

вот моя функция, которая запускает ранее:

var url_add_to_cart = link_general + doc.DocumentNode.SelectSingleNode("//form").Attributes["action"].Value;
var url_checkout = link_general + "/checkout.json";

    SendRequest_add_to_cart(url_add_to_cart, data_style_id, size);
    SendRequest_checkout(url_checkout);

Если у кого-то есть идея помочь мне, это будетотличный!большое спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

Благодаря @Hesam Fraridmehr вот ответ:

добавьте: & к строке, как эта: -postData + = "& style =" + data_style_id;

надеюсь, что это поможет другим

...