如何使用HttpClient将变量传递给POST请求

时间:2014-08-16 10:49:42

标签: c# post httpclient

我正在计算新的HttpClient

我尝试像这样发布一个http uri:

http://server/API/user/login?login=name&password=password

我认为这是要走的路:

using (var client = new HttpClient())
{
    var values = new List<KeyValuePair<string, string>>
    {
        new KeyValuePair<string, string>("login", "user"),
        new KeyValuePair<string, string>("password ", "password")
    };

    var content = new FormUrlEncodedContent(values);

    var response = await client.PostAsync("http://server/REST/user/login", content);
}

我能让它发挥作用的唯一方法是:

using (var client = new HttpClient())
{
    var response = await client.PostAsync("http://server/REST/user/login?login=user&password=password",null);
}

最后一种方式是正确的方式还是我在第一种方法中做错了什么?

1 个答案:

答案 0 :(得分:1)

示例显示它在Cookie标题中传递,而不是正文。如果我正确解释了API,您必须确实在URL中传递用户名和密码,并为Cookie标头提供网址编码数据。

基本上:使用第二种方法,对于所有后续调用,添加:

client.DefaultRequestHeaders.Add("Cookie", await content.ReadAsStringAsync());