使用ASP.NET通过POST接收(和发送)XML
发布时间:2020-05-23 20:39:01 所属栏目:asp.Net 来源:互联网
导读:我必须设置一个XML“Web服务”,它接收一个POST,其中’Content-type标头将指定“text / xml”. 将XML导入XDocument以便通过VB.NET的轴查询进行访问的最简单方法是什么? 我不相信Web服务可以保证遵循任何协议(例如SOAP等);只是针对各种请求的特定标签和子标签,
|
我必须设置一个XML“Web服务”,它接收一个POST,其中’Content-type标头将指定“text / xml”. 将XML导入XDocument以便通过VB.NET的轴查询进行访问的最简单方法是什么? 我不相信Web服务可以保证遵循任何协议(例如SOAP等);只是针对各种请求的特定标签和子标签,它将使用基本身份验证,因此我将不得不处理标头. (如果重要: 解决方法鉴于Steven的警告,答案可能是先用 Tom Holland’s test手动解析Request.InputStream,然后在Page_Load事件中解析XDocument.Load.在我提出这个问题之前就已经开始了Google搜索,但只有在检查了this之后才进行了检查,这也表明我已经走上了正确的道路. 此外,我还要问一下我的观点暗示的问题,即响应必须是XML,关于什么是最好的方法,但我找到了答案here. 总之,最终的代码是: Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
If Request.ContentType <> "text/xml" Then _
Throw New HttpException(500,"Unexpected Content-Type")
Dim id = CheckBasicAuthentication
Dim textReader = New IO.StreamReader(Request.InputStream)
CheckXmlValidity(textReader)
' Reset the stream & reader
Request.InputStream.Seek(0,IO.SeekOrigin.Begin)
textReader.DiscardBufferedData()
Dim xmlIn = XDocument.Load(textReader)
' process XML in xmlIn
Dim xmlOut = <?xml version="1.0" encoding="UTF-8" ?>
<someresult>
<header>
<id><%= id.ToString() %></id>
<datestamp>To be inserted</datestamp>
</header>
<result/>
</someresult>
' Further generation of XML for output
xmlOut.<someresult>.<header>.<datestamp>.Value = Date.UtcNow.ToString(xmlDateFormat)
xmlText.Text = xmlOut.ToString
End Sub
Private Function CheckBasicAuthentication() As Integer
Dim httpAuthorisation = Request.Headers("Authorization")
If Left(httpAuthorisation,6).ToUpperInvariant <> "BASIC " Then _
Throw New HttpException(401,"Basic Authentication Required")
Dim authorization = Convert.FromBase64String(Mid(httpAuthorisation,7))
Dim credentials = Text.Encoding.UTF8.GetString(authorization).Split(":"c)
Dim username = credentials(0)
Dim password = credentials(1)
Return ConfirmValidUser(username,password)
End Function
Private Shared Sub CheckXmlValidity(ByVal textReader As System.IO.StreamReader)
Try
' Check for "interesting" xml documents.
Dim settings = New System.Xml.XmlReaderSettings()
settings.XmlResolver = Nothing
settings.MaxCharactersInDocument = 655360
' Successfully parse the file,otherwise an XmlException is to be thrown. '
Dim reader = System.Xml.XmlReader.Create(textReader,settings)
Try
While reader.Read()
'Just checking.
End While
Finally
reader.Close()
End Try
Catch ex As Exception
Throw New HttpException(500,"Invalid Xml data",ex)
End Try
End Sub
和ASP.NET webpage.aspx是: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="webpage.aspx.vb" Inherits="WebPage" ContentType="text/xml" %> <asp:Literal ID="xmlText" runat="server" Mode="PassThrough"></asp:Literal> NB抛出HTTPException不是有害场景的有效最终解决方案. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用ASP.NET Identity 2.0和MVC 5进行自定义单点登录
- asp.net-mvc – 关闭剃刀中的HTML编码
- asp.net – Web API 2 – ApiController.InternalServerErr
- asp.net – 如何从服务器端关闭Modal popup Extender
- 使用ASP.net MVCJQuery将HTML标签(代码)作为字符串发布
- 如何使用代码隐藏技术在asp.net中获取当前页面的URL?
- bytearray图像asp.net
- asp.net – 如何引用一个javascript文件?
- asp.net-mvc – 为什么Hangfire需要身份验证才能查看仪表板
- asp.net – 动画gif不动画提交
推荐文章
站长推荐
- asp.net-mvc – MVC调用Html.Action在区域内?
- asp.net-core – 哪些.NET框架版本支持.NET Fram
- asp.net – CookieContainer和Response.Cookies集
- asp.net-mvc – ASP.NET MVC如何链接视图和控制器
- asp.net-mvc – 使用缓存配置文件缓存ChildActio
- asp.net – 无法返回JsonResult
- asp.net-mvc – 如何从Action属性返回一个Json对
- ASP.NET AJAX工具包 – CalendarExtender在Postb
- asp.net-mvc-2 – 使用Ninject返回null的HttpHan
- asp.net-mvc – Razor视图引擎优于其他视图引擎的
热点阅读
