使用HttpClient提交表单失败

本文关键字:失败 表单 提交 HttpClient 使用 | 更新日期: 2023-09-27 18:24:36

我正在尝试以编程方式在网页上提交表单。我正在Wordpress网站的评论表单上练习:http://www.smortazavi.com/games/before-eternity/contact/

这是基于这篇文章的代码:

private async void button_Click(object sender, RoutedEventArgs e)
{
    using (var client = new HttpClient())
    {
        var values = new Dictionary<string, string>
        {
           { "g16-name", "hello" },
           { "g16-email", "myemail@hotmail.com" },
            {"g16-comment", "comment" }
        };
        var content = new FormUrlEncodedContent(values);
        var response = await client.PostAsync("http://www.smortazavi.com/games/before-eternity/contact", content);
        var responseString = await response.Content.ReadAsStringAsync();
    }
    MessageBox.Show("Done!");   
}

当我运行代码时,responseString包含填充的表单输入,但表单实际上并没有提交。

你能说我在这里缺了什么吗?

使用HttpClient提交表单失败

快速浏览HTML显示表单包含两个隐藏字段:

<input type="hidden" name="contact-form-id" value="16">
<input type="hidden" name="action" value="grunion-contact-form">

大概这些也需要通过。将上面的名称/值对添加到values字典中。

如果仍然不起作用,请调出您选择的浏览器调试器(如Chrome的DevTools中的"网络"选项卡),提交表单,并仔细检查发送的请求,以确保URL正确,并且没有遗漏任何其他表单字段。您的代码看起来不错,所以您缺少的肯定是特定于该表单的细节。