【问题标题】:How to create cookie in c#.net windows application? [closed]如何在 c#.net windows 应用程序中创建 cookie? [关闭]
【发布时间】:2013-11-29 10:59:41
【问题描述】:

我有一个 Windows 应用程序。使用它我可以打开一个 Web 应用程序。 如何使用 c#.net 在 Windows 应用程序中创建 cookie

【问题讨论】:

    标签: c#


    【解决方案1】:

    创建cookie需要调用win api。

    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern bool InternetSetCookie(string url, string name, string data);
    

    上面的代码需要在类级别的代码中声明。

    然后可以从您的代码(例如单击事件处理程序)中调用该函数,如下所示:

    InternetSetCookie("http://www.example.com", "CookieName", "data=cookieData; expires = Sat,01-Jan-2012 00:00:00 GMT; path=/");
    

    然后设置这些 cookie,如果您启动浏览器,这些 cookie 就会存在并被使用。

    【讨论】:

    • 我从哪里得到这个 wininet.dll
    • @bageesh 来自MSDN:使用 WinINet API 的应用程序需要 Windows NT 4.0 或更高版本,或 Windows Me/98/95。有关使用特定编程元素需要哪些操作系统或组件的更多信息,请参阅文档的“要求”部分。
    • 这个真的是用于winforms或非网络表单应用程序的。
    • @SynerCoder 先生,我尝试了相同的代码,但它显示错误1)方法必须有返回值,2)预期类型怎么办?
    • @bageesh 该方法确实有一个返回值'bool'...你能给我你的测试代码吗?
    【解决方案2】:

    通过C#.Net Web Application,您可以通过以下方式读取和写入 cookie:

    Writing a Cookie:

    HttpCookie myCookie = new HttpCookie("myCookie");
    myCookie.Value = "SomeInfo";
    myCookie.Expires = DateTime.Now.AddDays(1d);
    Response.Cookies.Add(myCookie);
    

    Reading a Cookie:

    HttpCookie myCookie = Request.Cookies["myCookie"];
    

    【讨论】:

      【解决方案3】:

      您可以使用System.Net.CookieContainer 类在请求时保存 cookie 值。

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
      request.CookieContainer = cookieContainer;
      // Do something with this request
      

      cookieContainer 是一个变量,用于在您的应用程序和网络之间保持 cookie 转换。您可以在应用程序第一次启动时对其进行一次初始化。

      【讨论】:

      • 先生,我试过 System.Net.CookieContainer cookieContainer = new CookieContainer(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:1155/UI/frmLogin.aspx"); request.CookieContainer = cookieContainer; cookieContainer.Add(new Uri(@"http://localhost:1155/UI/frmLogin.aspx"), cook); 但是当我试图访问这个 cookie 时,从 Web 应用程序显示一个空引用异常
      • 你是如何创建cook的?
      • 能否给我代码
      • 我从来没有通过代码创建过Cookie 实例。我把它留给 Web 服务器。为了访问安全的 uri,我只是将信息发送到登录页面(例如用户、密码)。完成该请求后,我可以使用该端的任何安全页面,也可以在网络浏览器上浏览网络。
      【解决方案4】:

      也许这会对你有所帮助

                  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);
                  request.CookieContainer = new CookieContainer();
      
                  HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                  response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
      
                  foreach (Cookie cook in response.Cookies)
                  {
                      Console.WriteLine("Cookie:{0} = {1}", cook.Name, cook.Value);
                  }
      

      【讨论】:

        【解决方案5】:

        Windows 应用程序中不存在 Cookie - 相反,数据要么保存在文件中,要么保存在应用程序设置中,要么保存在注册表中,具体取决于数据量及其组织。您可以将其保存在数据库中、XML 文件中或作为二进制信息。

        但您不在 Windows 应用程序中使用 cookie - 它们用于从服务器在客户端上进行设置,这些概念在使用 Windows 应用程序时不适用。

        应用程序设置可能是最简单的: 1) 单击解决方案资源管理器中的项目,选择“属性”。 2) 双击“设置.设置”。 3) 在出现的对话框中,通过指定名称、类型和值来创建应用程序设置 - 将“范围”保留为“用户”。 4) 您现在可以轻松保存和加载您的值:

                Properties.Settings.Default.MySettingString = "New Value";
                Properties.Settings.Default.Save();
                ...
                string myValue = Properties.Settings.Default.MySettingString;
        

        更多详情请看这里 https://stackoverflow.com/search?q=create+cookie+in+windows+application+C%23

        【讨论】:

        • 我想从一个 Windows 应用程序中写一个 cookie。这样自定义硬件就可以与网页进行通信。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-13
        • 1970-01-01
        相关资源
        最近更新 更多