8
votes

Impossible d'envoyer des cookies avec RESTSHARP

J'essaie d'accéder à une API basée sur le repos sur un téléphone Windows à l'aide de quelques approches différentes, mais il semble de contourner des problèmes liés à la recherche de cookies à la demande avec chacune d'elles. J'ai essayé l'approche code> WebClient CODE> (qui semble maintenant être marquée SecurityCritical, vous ne pouvez plus hériter de lui et ajouter du code). J'avais l'air brièvement au httpwebrequest code> qui semblait encombrant au mieux.

Maintenant, j'utilise RestShaRP qui semble décent à utiliser, mais j'ai toujours des problèmes avec mes cookies qui ne sont pas ajoutés à la demande lorsqu'il est envoyé. p>

Mon code est comme suit: P>

// ... 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);
    });
}


3 commentaires

Comment déterminez-vous que les cookies ne sont-ils pas sur la demande?


J'ai tous deux exécuté Fiddler en tant que proxy pour l'émulateur et, pour m'assurer, j'ai essayé de le pointer dans un fichier PHP qui vient d'imprimer $ _cookie.


Je vais laisser ce lien ici pour la prospérité, au cas où quelqu'un d'autre ait le même problème. Il semble être un problème avec le code RESTSHARP: groups.google.com/group / RestSharp / Browse_thread / Filetage / ...


3 Réponses :


-1
votes

httpwebrequest est le meilleur à utiliser. Il suffit d'utiliser le Cookiecontainer de travailler avec des cookies. Mais vous devez conserver une référence de votre cuisine sur toutes vos demandes d'obtenir ce travail xxx

cc doit être référencé dans votre instance à être réutilisé sur une autre demande.


0 commentaires

11
votes

RESTSHARP 102.4 semble avoir fixé ce problème. xxx

ou, dans votre cas xxx

fonctionnera bien.


0 commentaires

1
votes

J'ai eu le même problème et, après des heures, j'ai essayé avec: xxx

J'espère que cela peut résoudre le problème.


0 commentaires