0

我必须发布到下面列出的 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 来做到这一点。

4

1 回答 1

0

看起来你错过了等待。您是否按照网上的示例进行操作?

string response = await client.PostAsync
于 2019-09-13T18:58:44.840 回答