簡體   English   中英

如何從外部Web服務捕獲傳入的SOAP XML消息(WSDL格式)

[英]How to Capture incoming SOAP XML Message (WSDL format) from external web service

我是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消息,並確保可以在流中捕獲它們? 任何提示或鏈接將不勝感激,謝謝。

“我是Web服務的新手,需要捕獲將發送到我的Web服務的SOAP XML消息。”

SOAP只是用於在Web服務的使用者和Web服務的使用者之間交換信息的協議。 考慮一下這種握手,將要傳遞到Web服務的數據打包到SOAP信封中。 Web服務的使用者將向您發送打包在SOAP信封中的數據。 這就引出了一個問題-消費者將如何知道該發送什么?

當您打開Web服務頁面時,它應該顯示支持的操作列表。 如果單擊EchoSoapRequest,您將看到一個示例SOAP請求,該請求應發送到您的服務及其響應。 您需要做的就是處理用戶在您的代碼中發送的參數。

在這種情況下,您的Web服務需要一個int。 使用您的Web服務的用戶將發送一個包裝在SOAP信封內的int。 如果希望用戶發送字符串,則聲明一個字符串作為輸入。

PS:作為一個旁注,如果您是從頭開始的話,您應該查看RESTful Web服務及其優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM