L'envoi de message SOAP avec C# Besoin d'Aide

Je voudrais envoyer un Message SOAP à un Service Web et de lire la réponse. Mon code est comme suit: je vous remercie de votre aide.

J'espère que ma question n'est pas répété, j'ai regardé autour pour trouver une solution mais je n'ai pas été couronnée de succès.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Xml;
using System.Net;
using System.IO;
namespace TolunaPush
{
public partial class _Default : System.Web.UI.Page
{
private string sourceID = "50001255";
private string email = "[email protected]";
private string firstName = "Muz";
private string lastName = "Khan";
private string countryID = "2000077";
private string countryLanguage = "2000240";
private string postalCode = "N19 3NU";
private string dob = "1977-03-08";
private string gender = "2000247";
protected void Page_Load(object sender, EventArgs e)
{
sendSoapMessage();
}
protected void sendSoapMessage()
{
XmlDocument doc = new XmlDocument();
doc.InnerXml = @"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<SubmitPanelist xmlns=""http://www.greenfield.com/RegistrationGateway/Messages"">
<Registration xmlns=""http://www.greenfield.com/RegistrationGateway/Types"">
<Source>
<SourceID>" + sourceID + @"</SourceID>
</Source>
<Email>" + email + @"</Email>
<FirstName>" + firstName + @"</FirstName>
<LastName>" + lastName + @"</LastName>
<CountryUK>
<CountryID>" + countryID + @"</CountryID>
<Language>" + countryLanguage + @"</Language>
<Address>
<Postalcode>" + postalCode + @"</Postalcode>
</Address>
</CountryUK>
<DOB>" + dob + @"</DOB>
<Gender>" + gender + @"</Gender>
</Registration>
</SubmitPanelist>
</soap:Body>
</soap:Envelope>";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://coreg.surveycenter.com/RegistrationGateway/PanelistService.asmx");
//if (proxy != null) req.Proxy = new WebProxy(proxy, true);
//req.Headers.Add("GetClientInfo", "http://tempuri.org/GetClientInfo");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
Stream stm = req.GetRequestStream();
doc.Save(stm);
stm.Close();
WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
Response.Write(r.ReadToEnd());
//Response.Write(stm.ToString());
//Response.Write(r.ToString());
Response.End();
}
}
}

Mise à jour
Comme suggéré par Darin. J'ai fait comme indiqué, cependant, la ligne de code suivante

using (var client = new RegistrationBindingsClient("RegistrationBindings"))

donne l'erreur

The type or namespace name 'RegistrationBindingsClient' could not be found (are you missing a using directive or an assembly reference?)

Toute aide sera grandement appréciée

Vous n'avez pas spécifié quel est le problème. Êtes-vous une erreur? Quelle est l'erreur? Où faut-il se produire? Quelles sont les états des objets pertinents quand il arrive? Si il n'y a pas d'erreur, à partir de quel point le comportement du code s'écarter de comportement attendu?
Le service web de ne pas avoir un WSDL si donc, vous semblez être de réinventer la roue. La façon habituelle de consommer des services web soap est d'ajouter une référence web ou utilisé wsdl.exe. Cela permettra de créer des classes de proxy qui traitent tous de la savon de trucs pour vous vous venez d'appeler des méthodes sur les classes.

OriginalL'auteur user1048006 | 2011-11-15