Не удалось отправить cookies с помощью RestSharp

Я пытаюсь получить доступ к API на основе REST на Windows Phone, используя несколько разных подходов, но у меня, похоже, возникают проблемы с прикреплением файлов cookie к запросу со всеми из них. Я пробовал подход WebClient (который теперь, кажется, стал отмеченным SecurityCritical, поэтому вы больше не можете наследовать его и добавить код). Я кратко посмотрел на HttpWebRequest который казался громоздким в лучшем случае.

Теперь я использую RestSharp, который кажется приличным для использования, но у меня все еще возникают проблемы с тем, что мои cookies не добавляются в запрос при его отправке.

Мой код выглядит следующим образом:

 // ... some additional support vars ... private RestClient client; public ClassName() { client = new RestClient(); client.BaseUrl = this.baseAddress.Scheme + "://" + baseAddress.DnsSafeHost; } public void GetAlbumList() { Debug.WriteLine("Init GetAlbumList()"); if (this.previousAuthToken == null || this.previousAuthToken.Length == 0) { throw new MissingAuthTokenException(); } RestRequest request = new RestRequest(this.baseUrl, Method.GET); // Debug prints the correct key and value, but it doesnt seem to be included // when I run the request Debug.WriteLine("Adding cookie [" + this.gallerySessionIdKey + "] = [" + this.sessionId + "]"); request.AddParameter(this.gallerySessionIdKey, this.sessionId, ParameterType.Cookie); request.AddParameter("g2_controller", "remote:GalleryRemote", ParameterType.GetOrPost); request.AddParameter("g2_form[cmd]", "fetch-albums-prune", ParameterType.GetOrPost); request.AddParameter("g2_form[protocol_version]", "2.2", ParameterType.GetOrPost); request.AddParameter("g2_authToken", this.previousAuthToken, ParameterType.GetOrPost); // Tried adding a no-cache header in case there was some funky caching going on request.AddHeader("cache-control", "no-cache"); client.ExecuteAsync(request, (response) => { parseResponse(response); }); } 

Если у кого-нибудь есть советы по поводу того, почему cookies не отправляются на сервер, сообщите мне об этом 🙂 Я использую RestSharp 101.3 и .Net 4.

Кажется, что RestSharp 102.4 исправил эту проблему.

  request.AddParameter(_cookie_name, _cookie_value, ParameterType.Cookie); 

или, в вашем случае

 request.AddParameter(this.gallerySessionIdKey, this.sessionId, ParameterType.Cookie); 

будет работать нормально.

HttpWebRequest лучше всего использовать. Просто пользователь CookieContainer работает с файлами cookie. Но вы должны сохранить ссылку на свой CookieContainer по всем вашим запросам, чтобы получить эту работу

 CookieContainer cc = new CookieContainer(); HttpWebRequest webRequest = HttpWebRequest.CreateHttp(uri); webRequest.CookieContainer = cc; webRequest.BeginGetResponse((callback)=>{//Code on callback},webRequest); 

cc должен быть указан в вашем экземпляре для повторного использования по другому запросу.