使用 HttpClient 提交表单失败
Submit Form Using HttpClient Fails
我正在尝试以编程方式在网页上提交表单。我正在练习我的 Wordpress 网站的评论表:
http://www.smortazavi.com/games/before-eternity/contact/
这是基于 on this post:
的代码
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 包含填充的表单输入,但实际上并未提交表单。
你能说我在这里错过了什么吗?
快速浏览 HTML 可以看出该表单包含 2 个隐藏字段:
<input type="hidden" name="contact-form-id" value="16">
<input type="hidden" name="action" value="grunion-contact-form">
大概那些也需要通过。将上面的 name/value 对添加到您的 values
字典中。
如果还是不行,打开你选择的浏览器调试器(比如 Chrome 的 DevTools 中的网络选项卡),提交表单,然后仔细检查发送到的请求确保 URL 正确并且您没有遗漏任何其他表单字段。您的代码看起来不错,因此肯定缺少特定于该表单的详细信息。
我正在尝试以编程方式在网页上提交表单。我正在练习我的 Wordpress 网站的评论表: http://www.smortazavi.com/games/before-eternity/contact/
这是基于 on this post:
的代码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 包含填充的表单输入,但实际上并未提交表单。
你能说我在这里错过了什么吗?
快速浏览 HTML 可以看出该表单包含 2 个隐藏字段:
<input type="hidden" name="contact-form-id" value="16">
<input type="hidden" name="action" value="grunion-contact-form">
大概那些也需要通过。将上面的 name/value 对添加到您的 values
字典中。
如果还是不行,打开你选择的浏览器调试器(比如 Chrome 的 DevTools 中的网络选项卡),提交表单,然后仔细检查发送到的请求确保 URL 正确并且您没有遗漏任何其他表单字段。您的代码看起来不错,因此肯定缺少特定于该表单的详细信息。