如何使用Restsharp永久進行身份驗證

authentication c# html-agility-pack rest restsharp

我正在開發一個從Web提取數據並使用HtmlAgilityPack解析它的應用程序。但是,它不是直接的,登錄是訪問數據所必需的。

我正在使用Restsharp進行身份驗證,如下所示:

        //class definitions 
        request = new RestRequest("http://allpoetry.com/login", Method.POST);
        request.AddParameter("utf8", "%E2%9C%93");
        request.AddParameter("authenticity_token", "Lr+JtLv7TkZrS73u5scRPbWhuUYDaVF7vd6lkKFF3FKYqNKHircT9v5WCT9EkneTJRsKXaA6nf6fiWopDB0INw==");
        request.AddParameter("referer", url);  // url to the page I want to go
        request.AddParameter("user[name]", "username");
        request.AddParameter("user[password]", "password");
        request.AddParameter("commit", "Log in");
        request.AddHeader("content-type", "application/x-www-form-urlencoded");
        response = client.Execute(request);

這很好用,但問題是我無法永久登錄,我無法使用這個RestRequest類實例發出另一個請求,它給出了我沒有登錄的錯誤。我找到了一個解決方法,但它沒有不能使用某些頁面,基本上我將url放入referer字段,但每次導航到另一個頁面時我都要提出請求,這很不方便。

如何永久登錄,以便我可以從同一個實例發出新請求?

謝謝!

熱門答案

經過一番研究,我發現答案是餅乾。每次發出請求時,響應都有cookie。我用過像這樣的餅乾。

response = client.Execute(request)我添加了這個:

        request.Resource = url;
        request.Method = Method.GET;
        foreach (var cookie in response.Cookies)
        {
            request.AddCookie(cookie.Name , cookie.Value);  //this adds every cookie in the previous response.
        }
        response = client.Execute(request);
       //use the response as required

這不會創建新實例,但使用相同的request進行進一步的請求,我通過它登錄。

謝謝你們每一個人的幫助!



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow