C# 直接阅读文章正文
我正在使用Google的re-captcha v2,Google的Javascript在运行时动态生成一个表单参数,键为C# 直接阅读文章正文,c#,asp.net-core,asp.net-core-mvc,asp.net-core-2.0,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.0,我正在使用Google的re-captcha v2,Google的Javascript在运行时动态生成一个表单参数,键为g-recaptcha-response。标记如下所示: <form method="post"> <div class="g-recaptcha" data-sitekey="6LcXjGYUAAAAA...g1UKiZ"></div> <input type="submit" id="submit" value="E
g-recaptcha-response
。标记如下所示:
<form method="post">
<div class="g-recaptcha" data-sitekey="6LcXjGYUAAAAA...g1UKiZ"></div>
<input type="submit" id="submit" value="Enter" />
</form>
<script src='https://www.google.com/recaptcha/api.js'></script>
我不知道如何在这种情况下使用模型。因此,我尝试使用以下代码直接读取请求正文:
public async Task<IActionResult> OnPostAsync()
{
String result;
using (StreamReader reader = new StreamReader(Request.Body)) {
result = await reader.ReadToEndAsync();
return RedirectToPage("/test");
}
}
公共异步任务OnPostAsync()
{
字符串结果;
使用(StreamReader=newstreamreader(Request.Body)){
结果=等待读卡器。ReadToEndAsync();
返回到Topage(“/test”);
}
}
结果
始终是一个空字符串,尽管我可以看到有来自检查Http流的数据。上面的代码有错误吗?它编译和运行时不会出错
或者是否有一个内置类或方法可以以Json等格式返回post数据
…是否有一个内置类或方法可以以Json等格式返回post数据
您的示例是发布表单url编码的数据。内置属性可以将其绑定到字典
模型。Newtonsoft可以将该模型转换为JSON供服务器端使用,而JsonResult
可以将该模型转换为JSON供客户端使用
[HttpPost]
public IActionResult Post([FromForm] Dictionary<string,string> model)
{
// convert to JSON
var json = Newtonsoft.Json.JsonConvert
.SerializeObject(model, Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(json);
// return JSON
return new JsonResult(model);
}
…然后我们将看到以下控制台输出
{
"g-recaptcha-response": "03AEMEkE....nLXmlhwEE",
"__RequestVerificationToken": "CfDJ8Oe....93pb"
}
你可以分享你正在使用的javascript吗?我建议您在操作中放置一个断点,并检查请求属性“search”以查找本应发送的“g-recaptcha-response”。也许您可以自定义js生成的输入名称。您好,我已经添加了标记。我有一个断点,但是
请求。Body
是一个流
对象,我不知道如何查看它的内容Request.Form.Keys
显示g-recaptcha-response
是提交的密钥之一,因此数据肯定在那里。看看这篇文章,看看它是否揭示了库本身看起来很有趣,可能会为您节省一些麻烦。链接是关于任务的后半部分,获取表单数据后与Google进行验证。但是从示例代码中,答案就像请求一样简单!谢谢。@OldGeezer我看到新消息,这篇文章使用了application/x-www-form-urlencoded
。因此,我们需要FromForm
属性。读得好。
POST http://localhost:5000/api/values HTTP/1.1
User-Agent: Fiddler
Host: localhost:5000
Content-Length: 85
Content-Type: application/x-www-form-urlencoded
g-recaptcha-response=03AEMEkE....nLXmlhwEE&__RequestVerificationToken=CfDJ8Oe....93pb
{
"g-recaptcha-response": "03AEMEkE....nLXmlhwEE",
"__RequestVerificationToken": "CfDJ8Oe....93pb"
}