我必须发布到下面列出的 html 表单中。
<input type="text" name="user[username]" value="">
<input type="password" name="user[password]" >
随着休息锐利,它可以正常工作 - 代码如下:
var clientRest = new RestClient(url);
var restRequest = new RestRequest();
restRequest.Method = Method.POST;
restRequest.AddParameter("user[username]", username);
restRequest.AddParameter("user[password]", password);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
IRestResponse responseRestSharp = clientRest.Execute(restRequest);
string content = responseRestSharp.Content;
但是当我尝试使用 System.Net.Http 提供的 HttpClient 时,我没有登录到响应中的会话 - 代码如下:
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(@"application/x-www-form-urlencoded"));
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("user[username]", username),
new KeyValuePair<string, string>("user[password]", password)
string response = client.PostAsync(url, content).Result.Content.ReadAsStringAsync().Result;
....
我问自己是否FormUlrEncodedContent正确地将其转换为 aname="user[username]" 并且name="user[password]"像 restsharp 一样使用它的 AddParameter 来做到这一点。