Я пытаюсь сделать SOAP-запрос в C #.Используя SoapUI, я успешно выполнил требуемый запрос, поэтому я в основном скопировал строку запроса в LoadXml следующего кода C #:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"https://w8cert.iconnectdata.com:443/FleetCreditWS/services/FleetCreditWS0200");
webRequest.Headers.Add(@"SOAP:Action");
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
XmlDocument soapEnvelopeXml = new XmlDocument();
soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8"" ?><soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:main=""http://fleetCredit02.comdata.com/maintenance/"" xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>{MyUserName}</wsse:Username>
<wsse:Password>{MyPassword}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<main:ProprietaryIntradayRequest>
<startDate>2018-02-06</startDate>
<maskCardFlag>false</maskCardFlag>
</main:ProprietaryIntradayRequest>
</soapenv:Body>
</soapenv:Envelope>");
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
WebResponse response;
try
{
using (response = webRequest.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
Console.WriteLine(soapResult);
}
}
}
catch (WebException e)
{
StreamReader str = new StreamReader(e.Response.GetResponseStream());
System.Diagnostics.Debugger.Break();
}
Этот код вызывает постоянную (500) внутреннюю ошибку сервера встрока "using (response = webRequest.GetResponse ())".Я даже пытался перехватить ответ веб-исключения, но получил ту же ошибку 500.
Может кто-нибудь увидеть то, что мне не хватает, что приведет к тому, что тот же запрос будет работать в SoapUI, но не получится в C #?