Próbowałem uzyskać dostęp do interfejsu API opartego na REST na telefonie z systemem Windows Phone przy użyciu kilku różnych podejść, ale wydaje mi się, że mam problemy z załączaniem plików cookie do żądania z wszystkimi z nich. Próbowałem podejście WebClient
(który teraz wydaje się być oznaczony SecurityCritical, więc nie można już dziedziczyć z niego i dodać kod). Spojrzałem krótko na HttpWebRequest
, co wydawało się w najlepszym wypadku uciążliwe.Nie można wysyłać plików cookie za pomocą programu RestSharp
Teraz używam RestSharp, który wydaje się przyzwoity w użyciu, ale nadal mam problemy z tym, że moje pliki cookie nie są dodawane do żądania, gdy są wysyłane.
Mój kod wygląda następująco:
// ... 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);
});
}
Jeśli ktoś ma jakieś wskazówki co do tego, dlaczego pliki cookie nie są wysyłane do serwera, proszę dać mi znać :) Używam RestSharp 101,3 i .Net 4.
W jaki sposób określasz, że pliki cookie nie są dostępne na żądanie? –
Obaj używaliśmy Fiddlera jako proxy dla emulatora i, aby upewnić się, próbowałem wskazać go w pliku PHP, który właśnie wydrukował $ _COOKIE. – NiteLite
Mam zamiar zostawić ten link tutaj dla dobrobytu, na wypadek, gdyby ktoś inny miał ten sam problem. Wydaje się, że problem dotyczy kodu RestSharp: http://groups.google.com/group/restsharp/browse_thread/thread/d93f73e9e300ba43 – NiteLite