4

だから、これは私が使っていたコードです



    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();
    }

Cookie情報を渡さないことを除いて、動作しているhttpclientに切り替えたいと思います。私は情報を取得しますが、匿名の情報だけです。私が送信しているユーザーの情報ではありません。これが私が現在持っているものです。



    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();

4

1 に答える 1

5

を使用し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();

この同じ動作への参照を見つけましたhere、「Cookie」という名前のヘッダーDefaultRequestHeadersは無視され、送信されないことを述べていますが、他の値は期待どおりに機能するようです。

于 2012-12-09T07:16:53.063 に答える