@petroglif

Что не так с моим SOAP запросом?

Создаю запрос на С# таким кодом

public void SOAP2()
        {
            string postData = File.ReadAllText("GetInfo.xml", Encoding.UTF8).Replace("\n", " ");

            WebRequest request = WebRequest.Create("https://tracking.russianpost.ru/rtm34?wsdl");
            request.ContentType = "text/xml;charset=\"utf-8\"";
            request.Method = "POST";

            StreamWriter sw = new StreamWriter(request.GetRequestStream());
            sw.WriteLine(postData);
            sw.Close();

            WebResponse response = request.GetResponse();

            XDocument loaded = XDocument.Load(response.GetResponseStream());

            richTextBox1.Text = loaded.ToString();
            //// разбираем ответ
            loaded.Save("GetInfo2.xml");
        }


Вот код самого запроса

<?xml version="1.0" encoding="utf-8"?>
<head>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:oper="http://russianpost.org/operationhistory" xmlns:data="http://russianpost.org/operationhistory/data" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header/>
   <soap:Body>
      <oper:getOperationHistory>
         <!--Optional:-->
         <data:OperationHistoryRequest>
            <data:Barcode>18501634020406</data:Barcode>
            <data:MessageType>0</data:MessageType>
            <!--Optional:-->
            <data:Language>RUS</data:Language>
         </data:OperationHistoryRequest>
         <!--Optional:-->
         <data:AuthorizationHeader soapenv:mustUnderstand="?">
            <data:login>login</data:login>
            <data:password>pass</data:password>
         </data:AuthorizationHeader>
      </oper:getOperationHistory>
   </soap:Body>
</soap:Envelope>
</head>


В итоге сервер отвечает, но ответ совершенно не такой какой должен быть. Ответ должен получиться всего на несколько строк но вместо этого я получаю муру на 12КБ. С самим запросом всё в порядке, проверял в специализированной программе. Вопрос, что не так с C# кодом?
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Так запрос делаете на получение WSDL файла (https://tracking.russianpost.ru/rtm34?wsdl) его и получаете.
На странице https://tracking.pochta.ru/specification, указано, что адрес сервиса https://tracking.russianpost.ru/rtm34

Да и запрос должен быть навеное без xml заголовка и странного тега head, то есть начинаться с soap:Envelope
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы