Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Existuje několik způsobů jak implementovat volání WS v prostředí C#.

WSDL definice

HttpClient

Pro větší kontrolu nad kódem, případně pro situace kdy nepoužíváte IDE které umožňuje automaticky generovat potřebný kód na základě WSDL definice, je možné využít třídy HttpClient, která je dostupná ve verzích:

Code Block
languagec#
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://creditwebservices.creditcheck.cz/CreditCheckAktualizace.asmx");
request.Headers.Add("SOAPAction", "https://creditwebservices.creditcheck.cz/GetSubjectFullReport");
var content = new StringContent("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n    <soap:Header>\n        <CreditCheckHeader xmlns=\"https://creditwebservices.creditcheck.cz/\">\n            <Login>{login}</Login>\n            <Password>{password}</Password>\n        </CreditCheckHeader>\n    </soap:Header>\n    <soap:Body>\n        <GetSubjectFullReport xmlns=\"https://creditwebservices.creditcheck.cz/\">\n            <subjectData xmlns=\"https://creditwebservices.creditcheck.cz/\">\n                <requestSubject>\n                    <subjectType>Company</subjectType>\n                    <ic>00014915</ic>\n                </requestSubject>\n            </subjectData>\n        </GetSubjectFullReport>\n    </soap:Body>\n</soap:Envelope>", null, "text/xml; charset=utf-8");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Service reference

Využijeme možností které nám nabízí IDE a necháme automaticky vygenerovat potřebné třídy a metody pro volání na základě WSDL definice ke které poskytnete URL (viz. výše).

Jako první přidáme service referenci:

...

Jako další krok použijeme vygenerované třídy a metody pro volání Creditcheck webové služby.

Image Added

Code Block
languagec#
using System.Xml;

Creditcheck_ServiceReference.CreditCheckAktualizaceSoapClient client =
    new Creditcheck_ServiceReference.CreditCheckAktualizaceSoapClient(Creditcheck_ServiceReference.CreditCheckAktualizaceSoapClient.EndpointConfiguration.CreditCheckAktualizaceSoap);

Creditcheck_ServiceReference.CreditCheckHeader ccHeader = new Creditcheck_ServiceReference.CreditCheckHeader();
ccHeader.Login = "{login}";
ccHeader.Password = "{password}";

string gsfrXmlRequest = @"
                <requestSubject>
                    <subjectType>Company</subjectType>
                    <ic>{ico}</ic>
                </requestSubject>";

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(gsfrXmlRequest);

var getCreditChecksResult = await client.GetCreditChecksAsync(ccHeader);
var getSubjectFullReportResult = await client.GetSubjectFullReportAsync(ccHeader, xmlDocument);