restsharp-响应对象中没有cookie我对本地主机服务器的请求有问题。对于身份验证,我需要两个cookie,一个来自sendReqForToken()方法,另一个来自sendLoginReq(stringlogin,stringpass)。作为响应,我从sendLoginReq获取cookie,但不是从sendReqForToken()获取。我不知道为什么一个请求有cookie而第二个请求没有。有趣的是,我从sendReqForToken()方法中获得了正确的令牌(响应内容是正确的),但响应标头中没有任何cookie。这是sendReqForToken()方法体:publicvoidsendReqForToken(){stringadres=Globals.TOKEN_URL;RestRequestrequest=newRestRequest(adres,Method.GET);varclient=newRestClient();client.CookieContainer=newCookieContainer();client.ExecuteAsync(request,(response)=>{if(response.StatusCode==HttpStatusCode.OK){vartokenValue=JsonConvert.DeserializeObject(response.Content);DataManager.Instance.authToken=tokenValue.authenticity_token;如果(响应。Cookies.Count>0){varcookie=response.Cookies.FirstOrDefault();DataManager.Instance.cookieJar.Add(newUri(Globals.TOKEN_URL),newCookie(cookie.Name,cookie.Value,cookie.Path,cookie.Domain));}}else{}});}response.Cookies.Count总等于0。response.cookies的属性始终为null。这是sendLoginReq方法主体:publicvoidsendLoginReq(stringlogin,stringpass){login="admin";通过=“管理员”;stringadres=Globals.LOGIN_URL;RestRequestrequest=newRestRequest(adres,Method.POST);varclient=newRestClient();request.RequestFormat=DataFormat.Json;尝试{request.AddBody(new{authenticity_token=DataManager.Instance.authToken,commit="Login",utf8=true,user_session=new{email=login,password=pass}});}catch{}client.ExecuteAsync(request,(response)=>{if(response.StatusCode==HttpStatusCode.OK){if(response.StatusCode==HttpStatusCode.OK){varcookie=response.Cookies.FirstOrDefault();DataManager.Instance.cookieJar.Add(newUri(Globals.LOGIN_URL),newCookie(cookie.Name,cookie.Value,cookie.Path,cookie.Domain));}}else{}});在第二种方法中,我得到了正确的cookie。非常感谢任何想法。我有同样的问题,您的服务器发送一个带有HTTPonly=true参数的cookie,您应该将HTTPOnly参数更改为false然后您可以从令牌响应中获取cookie。请参阅此链接来回答您的问题谢谢@KarthikNishanth。说清楚:client.CookieContainer=newCookieContainer();varcookie=client.CookieContainer.GetCookieHeader(newUri("http://domain_or_subdomain.ext"));varclient是一个RestClientclient.Execute(request);GetCookieHeader()将返回所需的cookie。以上就是C#学习教程:restsharp-response对象中没有cookie分享全部内容,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
