Json 通过WP8应用程序发送带有HTTPWebRequestion的Cookie
我必须为每个后续的HTTPWebRequest向服务器发送cookie。我的代码如下Json 通过WP8应用程序发送带有HTTPWebRequestion的Cookie,json,cookies,windows-phone-8,httpwebrequest,Json,Cookies,Windows Phone 8,Httpwebrequest,我必须为每个后续的HTTPWebRequest向服务器发送cookie。我的代码如下 class APIManager { CookieContainer cookieJar = new CookieContainer(); CookieCollection responseCookies = new CookieCollection(); private async Task<string> httpRequest(HttpWebRequest request) { s
class APIManager
{
CookieContainer cookieJar = new CookieContainer();
CookieCollection responseCookies = new CookieCollection();
private async Task<string> httpRequest(HttpWebRequest request)
{
string received;
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory
.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
using (var responseStream = response.GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{
cookieJar = request.CookieContainer;
responseCookies = response.Cookies;
received = await sr.ReadToEndAsync();
}
}
}
return received;
}
public async Task<string> Get(string path)
{
var request = WebRequest.Create(new Uri(path)) as HttpWebRequest;
request.CookieContainer = cookieJar;
return await httpRequest(request);
}
public async Task<string> Post(string path, string postdata)
{
var request = WebRequest.Create(new Uri(path)) as HttpWebRequest;
request.Method = "POST";
request.CookieContainer = cookieJar;
byte[] data = Encoding.UTF8.GetBytes(postdata);
using (var requestStream = await Task<Stream>.Factory.FromAsync(request.BeginGetRequestStream, request.EndGetRequestStream, null))
{
await requestStream.WriteAsync(data, 0, data.Length);
}
return await httpRequest(request);
}
}
我使用了它,但服务器仍然返回“令牌不匹配”错误。我需要和供应商谈谈吗
下图显示了我的问题和要求
我还没看到你对cookieJar做过什么
//Create the cookie container and add a cookie.
request.CookieContainer = new CookieContainer();
// This example shows manually adding a cookie, but you would most
// likely read the cookies from isolated storage.
request.CookieContainer.Add(new Uri("http://api.search.live.net"),
new Cookie("id", "1234"));
cookieJar
在您的APIManager中是一个成员,每次您的实例APIManager中,cookieJar
都是一个新实例。您需要确保cookieJar
包含网站需要的内容
你可以看看这个你有一个鹰眼,事实上代码是旧的。我将cookiejar更改为static,并验证它在下一次调用中的计数为3。请让我知道使其成为静态将起作用,或者我应该持久化域ii(cookie供应商要求持久化),然后每次都发送它?当前代码是私有静态CookieContainer cookieJar=new CookieContainer();静态成员仍然可以共享,因为静态成员属于类而不是实例。@LojiSmithKaleem您可以尝试请求。标头[“Cookie”]=“您的Cookie”;request.CookieContainer.Add(新Uri(“http://.com,UriKind.Absolute),responseCookies[“cookietitle”];
//Create the cookie container and add a cookie.
request.CookieContainer = new CookieContainer();
// This example shows manually adding a cookie, but you would most
// likely read the cookies from isolated storage.
request.CookieContainer.Add(new Uri("http://api.search.live.net"),
new Cookie("id", "1234"));