Mencoba membuat klien C # (akan dikembangkan sebagai layanan Windows) yang mengirimkan permintaan SOAP ke layanan web (dan mendapatkan hasilnya).
Dari pertanyaan ini saya melihat kode ini:
protected virtual WebRequest CreateRequest(ISoapMessage soapMessage)
{
var wr = WebRequest.Create(soapMessage.Uri);
wr.ContentType = "text/xml;charset=utf-8";
wr.ContentLength = soapMessage.ContentXml.Length;
wr.Headers.Add("SOAPAction", soapMessage.SoapAction);
wr.Credentials = soapMessage.Credentials;
wr.Method = "POST";
wr.GetRequestStream().Write(Encoding.UTF8.GetBytes(soapMessage.ContentXml), 0, soapMessage.ContentXml.Length);
return wr;
}
public interface ISoapMessage
{
string Uri { get; }
string ContentXml { get; }
string SoapAction { get; }
ICredentials Credentials { get; }
}
Terlihat bagus, ada yang tahu cara menggunakannya dan apakah itu praktik terbaik?
c#
soap
webservice-client
Basis Data
sumber
sumber
Saya mendapat solusi sederhana ini di sini :
Mengirim permintaan SOAP dan menerima respons dalam .NET 4.0 C # tanpa menggunakan kelas WSDL atau proxy:
sumber
webRequest.Headers.Add("SOAPAction", "http://tempuri.org/.....");
Periksa Aksi SABUN yang ada di SoapUI dan gunakan itu.Praktik terbaik adalah merujuk WSDL dan menggunakannya seperti referensi layanan web. Lebih mudah dan berfungsi lebih baik, tetapi jika Anda tidak memiliki WSDL, definisi XSD adalah sepotong kode yang baik.
sumber
Saya pikir ada cara yang lebih sederhana:
sumber
Saya menulis kelas helper yang lebih umum yang menerima kamus parameter khusus berbasis string, sehingga mereka dapat diatur oleh pemanggil tanpa harus membuat hard-code. Tak perlu dikatakan bahwa Anda hanya boleh menggunakan metode seperti itu ketika Anda ingin (atau perlu) untuk secara manual mengeluarkan layanan web berbasis SOAP: dalam skenario paling umum pendekatan yang disarankan akan menggunakan WSDL Layanan Web bersama-sama dengan Tambah Referensi Layanan Visual Studio fitur sebagai gantinya.
Untuk info & detail tambahan mengenai kelas ini Anda juga dapat membaca posting ini di blog saya.
sumber
Jadi ini adalah kode terakhir saya setelah googling selama 2 hari tentang cara menambahkan namespace dan membuat permintaan sabun bersama dengan amplop SOAP tanpa menambahkan proxy / Referensi Layanan
sumber
Panggil layanan web SOAP di c #
sumber
new UpdatedOutlookServiceReferenceAPI.OutlookServiceSoapClient()
?