我是 Web 服务的新手,需要捕获将发送到我的 Web 服务的 SOAP XML 消息。我发现文章说您可以从 asmx WebMethod 中读取 Request.InputStream 的内容。
捕获对 ASP.NET ASMX Web 服务的 SOAP 请求
代码如下:
using System;
using System.Collections.Generic;
using System.Web;
using System.Xml;
using System.IO;
using System.Text;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace SoapRequestEcho
{
[WebService(
Namespace = "http://soap.request.echo.com/",
Name = "SoapRequestEcho")]
public class EchoWebService : WebService
{
[WebMethod(Description = "Echo Soap Request")]
public XmlDocument EchoSoapRequest(int input)
{
// Initialize soap request XML
XmlDocument xmlSoapRequest = new XmlDocument();
// Get raw request body
Stream receiveStream = HttpContext.Current.Request.InputStream
// Move to begining of input stream and read
receiveStream.Position = 0;
using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
// Load into XML document
xmlSoapRequest.Load(readStream);
}
// Return
return xmlSoapRequest;
}
}
}
但是,我很困惑,因为这需要一个 int 输入参数。我想我可以删除它,但我不确定外部用户将如何调用我的 Web 服务并向其发布 XML 消息。我如何对此进行测试以向其发送 XML 消息并确保我可以在流中捕获它们?任何提示或链接将不胜感激,谢谢。