无法与RestSharp发送cookieRestSharp、cookie

2023-09-03 17:17:57 作者:常闻君言笑

我一直在试图访问一个基于REST的API在Windows手机采用了一些不同的方法,但我似乎遇到了问题,安装cookies来与他们的请求。我已经试过了 Web客户端办法(现在似乎已经成为标记SecurityCritical,这样你就可以不再从它继承并添加code)。我简要地的HttpWebRequest 这充其量似乎显得累赘。

I have been trying to access a REST-based API on a Windows Phone using a few different approaches, but I seem to be running into issues with attaching cookies to the request with all of them. I have tried the WebClient approach (which now seems to have become marked SecurityCritical, so you can no longer inherit from it and add code). I looked briefly at HttpWebRequest which seemed cumbersome at best.

现在我使用RestSharp这似乎体面的使用,但我仍然有问题,我的饼干没有被添加到时,它发送的请求。

Now I am using RestSharp which seems decent to use, but I am still having problems with my cookies not being added to the request when it's sent.

我的code是如下:

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

如果任何人有任何的提示,为什么cookie不会被发送到服务器,请让我知道:)我使用RestSharp 101.3和.NET 4。

If anyone has any tips as to why the cookies aren't being sent to the server, please let me know :) I am using RestSharp 101.3 and .Net 4.

推荐答案

RestSharp 102.4似乎已经解决了这个问题。

RestSharp 102.4 seems to have fixed this problem.

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

或者,你的情况

or, in your case

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

将正常工作。

will work fine.