从WebClient POST请求获取cookie?

时间:2013-12-28 04:30:48

标签: c# asp.net cookies asp.net-web-api webclient

我正在尝试向设置身份验证Cookie的API控制器发送POST请求。我需要检索那个cookie,但我不确定如何。我有什么:

从服务发送:

  public static Cookie Authenticate(string username, string url) {
        using (var client = new WebClient()) {
            client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
            var data = "="+username;
            var test = client.UploadString(url, "POST", data);
            // get cookie here, converted from HttpCookie
            return new Cookie();
        }
    }

在API控制器上接收:

    [Route("api/auth")]
    [System.Web.Http.AcceptVerbs("POST")]
    public HttpCookie SetCookie([FromBody] string username) {
        FormsAuthentication.SetAuthCookie(username, true);
        return FormsAuthentication.GetAuthCookie(decrypted, true);
    }

目前,这会返回我认为是cookie的字符串表示形式,这对我没什么好处。如何从WebClient捕获HttpCookie?

1 个答案:

答案 0 :(得分:1)

WebClient是一种高级抽象,不会将Cookie暴露给消费者。

您有两种选择:

您可以从WebClient派生自己的类,覆盖GetWebResponse方法并在那时读取cookie

或者您可以直接使用HttpWebRequest等较低级别的课程。