C# 检索包含XML的HTTP POST请求
我需要设置一个网页,通过HTTP POST侦听XML文档。我不需要发帖,我需要收到那个帖子。这是什么东西?我应该使用HTTP处理程序、web服务、webRequest、流还是其他什么?我需要使用IIS服务器,更喜欢C# 我试过…C# 检索包含XML的HTTP POST请求,c#,xml,http,iis,post,C#,Xml,Http,Iis,Post,我需要设置一个网页,通过HTTP POST侦听XML文档。我不需要发帖,我需要收到那个帖子。这是什么东西?我应该使用HTTP处理程序、web服务、webRequest、流还是其他什么?我需要使用IIS服务器,更喜欢C# 我试过… 我不认为我可以使用WebRequest,因为我没有发送请求,只是在等待它们 “HttpRequest.InputStream”,但我不确定如何使用它或将它放在哪里。我需要在web服务或asp.net应用程序中使用它吗?我把它放进去了 我尝试了一个简单的web服务-但当
我正在尝试从另一个程序接收通知。您可以编写一个ASP.NET应用程序,该应用程序将托管在IIS中,其中您可以有一个.ASPX页面或一个泛型页面(取决于您希望结果的格式-是否返回HTML或其他类型)然后读取
Request.InputStream
,其中包含来自客户端的请求主体
下面是一个如何编写通用处理程序的示例(MyHandler.ashx
):
我不确定在哪里调用或使用处理程序。这就是我目前所拥有的 Default.aspx
<%@Page Inherits="WebApplication1._Default"%>
<%@OutputCache Duration="10" Location="Server" varybyparam="none"%>
<script language="C#" runat="server">
void Page_Init(object sender, EventArgs args) {
}
}
</script>
<html>
<body>
</body>
</html>
我不需要返回任何东西,我只是收到来自另一个程序的通知。我尝试了Request.InputStream,并在代码中设置了一个断点。它似乎没有收到任何通知。我的代码与上面的try#2链接非常相似。我把它放进了书页。每次加载请求后触发页吗?HTTP是基于请求/响应的协议。所以你必须总是归还一些东西。您可以返回一个200状态代码,其中有一个空的正文,向客户端指示操作成功。我知道了,我将试用该代码并让您知道。谢谢你的帮助!=]所以我让你的密码生效了我想。。。我正在使用wfetch发送GET和POST请求。代码能够看到GET请求,但在我发送POST时什么也没有发生。有什么想法吗?谢谢nm您必须ping确切的页面,不能只执行localhostThank,但我试图远离网络层。@Number,它不是TcpListener,它是HttpListener,因此与NW层无关,但当然,您的代码是您的选择。哦,好的,谢谢,我会尝试一下。处理程序方法不适用于me@nubme,你解决了这个问题吗?
<%@Page Inherits="WebApplication1._Default"%>
<%@OutputCache Duration="10" Location="Server" varybyparam="none"%>
<script language="C#" runat="server">
void Page_Init(object sender, EventArgs args) {
}
}
</script>
<html>
<body>
</body>
</html>
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpContext contex = Context;
MyHandler temp = new MyHandler();
temp.ProcessRequest(context);
}
}
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var stream = context.Request.InputStream;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
string xml = Encoding.UTF8.GetString(buffer);
... do something with the XML
// We only set the HTTP status code to 202 indicating to the
// client that the request has been accepted for processing
// but we leave an empty response body
context.Response.StatusCode = 202;
}
public bool IsReusable
{
get
{
return false;
}
}
}
}