Sme*_*egs 4 .net c# httpclient windows-runtime
所以,这是我正在使用的代码
string URL = "http://www.test.com/posts/.json";
var getInfo = (HttpWebRequest)HttpWebRequest.Create(URL);{
getInfo.Headers["Cookie"] = CookieHeader;
getInfo.ContentType = "application/x-www-form-urlencoded";
using (WebResponse postStream = await getInfo.GetResponseAsync())
{
StreamReader reader = new StreamReader(postStream.GetResponseStream());
string str = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
我想切换到我已经工作的httpclient,除了它没有传递Cookie信息.我得到的信息,但只是匿名信息.不是我发送的用户的信息.这是我现在拥有的.
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri("http://www.test.com/");
client.DefaultRequestHeaders.Add("Cookie", CookieHeader);
HttpResponseMessage response = await client.GetAsync("http://www.test.com" + URL);
string str;
str = await response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
您需要使用a HttpClientHandler,将cookie添加到其中,然后将其传递给HttpClient构造函数.
一个例子:
Uri baseUri = new Uri("http://www.test.com/");
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.CookieContainer.Add(baseUri, new Cookie("name", "value"));
HttpClient client = new HttpClient(clientHandler);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = baseUri;
HttpResponseMessage response = await client.GetAsync("http://www.test.com" + URL);
string str2 = await response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
我在这里找到了对这个相同行为的引用,声明名为"Cookie"的标题DefaultRequestHeaders被忽略而不被发送,但看起来任何其他值都将按预期工作.
| 归档时间: |
|
| 查看次数: |
3049 次 |
| 最近记录: |