我订阅了一个大众电子邮件服务,当他们在结束时发生错误时,会将我的网站上的页面发布为端点,以通知我电子邮件已退回。
他们描述如下:
The event data is sent in the POST request body using a JSON object.
我需要知道的是如何捕获发布给我的信息? 目前我将它们指向一个通用处理程序,一个.ashx页面,只要它在.NET中就可以改为。
使用第一代经典ASP和现在的.NET工作10年我以前从未这样做过,我必须承认我甚至不知道从哪里开始。
答案 0 :(得分:2)
这是我用来实现类似事情的代码 - 不知道我最初在哪里得到它。
C#
var strJSON = String.Empty;
context.Request.InputStream.Position = 0;
using (var inputStream = new StreamReader(context.Request.InputStream))
{
strJSON = inputStream.ReadToEnd();
}
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
object serJsonDetails = javaScriptSerializer.Deserialize(strJSON, typeof(object));
// go and process the serJsonDetails object
或VB
Dim strJSON = [String].Empty
context.Request.InputStream.Position = 0
Using inputStream = New StreamReader(context.Request.InputStream)
strJSON = inputStream.ReadToEnd()
End Using
Dim javaScriptSerializer As New JavaScriptSerializer()
Dim serJsonDetails As Object = javaScriptSerializer.Deserialize(strJSON, GetType(Object))
' go and process the serJsonDetails object
答案 1 :(得分:1)
您可以只读取请求流(Request.GetRequestStream
)并使用Json.NET反序列化为对象。
您可以使用MVC4和内置对象映射。
有很多选择。也许你应该更多地阅读它们,以便你了解它们的能力和缺点。
答案 2 :(得分:0)
可能Request.Form (here)将帮助您获取JSON,如果您知道帖子的内容,然后您需要类似json.net库来获取对象,或者您只需搜索字符串使用正则表达式或关键字
或者,如果您可以将帖子定向到Web服务(asmx)而不是网页,那些服务将为您解析json
答案 3 :(得分:0)
如果您需要两次或多次阅读原始帖子数据,我建议您使用此代码。
preceding zeros are ignored when setting a number-type object as the right operand of <<