Maison > développement back-end > C++ > Comment envoyer et recevoir des requêtes et des réponses SOAP en C# ?

Comment envoyer et recevoir des requêtes et des réponses SOAP en C# ?

Susan Sarandon
Libérer: 2025-01-24 06:47:15
original
260 Les gens l'ont consulté

How to Send and Receive SOAP Requests and Responses in C#?

Envoi de requêtes SOAP et réception de réponses en C

Problème

Vous devez créer un client C# qui envoie des requêtes SOAP à un service Web et reçoit les réponses.

Solution

Voici un code extrait qui montre comment y parvenir :

using System.Net;
using System.IO;
using System.Xml;

public static void CallWebService()
{
    // Replace with your SOAP endpoint URL
    var url = "http://example.com/service.asmx";
    // Replace with your SOAP action
    var action = "http://example.com/service.asmx?op=HelloWorld";

    var soapEnvelope = CreateSoapEnvelope();
    var webRequest = CreateWebRequest(url, action);
    InsertSoapEnvelopeIntoWebRequest(soapEnvelope, webRequest);

    // Send the SOAP request
    var asyncResult = webRequest.BeginGetResponse(null, null);
    asyncResult.AsyncWaitHandle.WaitOne();

    // Receive the SOAP response
    var soapResponse = "";
    using (var webResponse = webRequest.EndGetResponse(asyncResult))
    {
        using (var reader = new StreamReader(webResponse.GetResponseStream()))
        {
            soapResponse = reader.ReadToEnd();
        }
    }
}

private static HttpWebRequest CreateWebRequest(string url, string action)
{
    var webRequest = (HttpWebRequest)WebRequest.Create(url);
    webRequest.Headers.Add("SOAPAction", action);
    webRequest.ContentType = "text/xml;charset=\"utf-8\"";
    webRequest.Accept = "text/xml";
    webRequest.Method = "POST";
    return webRequest;
}

private static XmlDocument CreateSoapEnvelope()
{
    var soapEnvelope = new XmlDocument();
    soapEnvelope.LoadXml(
        $@"<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""
               xmlns:xsi=""http://www.w3.org/1999/XMLSchema-instance"" 
               xmlns:xsd=""http://www.w3.org/1999/XMLSchema"">
          <SOAP-ENV:Body>
            <HelloWorld xmlns=""http://tempuri.org/""
                SOAP-ENV:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/"">
                <int1 xsi:type=""xsd:integer"">12</int1>
                <int2 xsi:type=""xsd:integer"">32</int2>
            </HelloWorld>
          </SOAP-ENV:Body>
        </SOAP-ENV:Envelope>");
    return soapEnvelope;
}

private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelope, HttpWebRequest webRequest)
{
    using (var stream = webRequest.GetRequestStream())
    {
        soapEnvelope.Save(stream);
    }
}
Copier après la connexion

Ce code crée une requête Web, définit l'en-tête de l'action SOAP et insère l'enveloppe SOAP dans la requête. Il envoie ensuite la demande et lit la réponse SOAP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal