Отправить запрос на мыльный сервис с авторизацией - PullRequest
0 голосов
/ 17 мая 2019

Я хочу интегрировать службу в мой проект. В их плохом документе написано:

Headers:
POST /avia.php HTTP/1.1
Host: www.tpg.ua
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.2.16
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.tpg.ua/avia.php#getCities"
Content-Length: 395
Authorization: Basic here_your_basic_auth_token
Body:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-
ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://www.tpg.ua/avia.php"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getCities />
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Я пытаюсь преобразовать это в код C #

Я получаю базовый токен, как этот, этотэто работа, это дает мне строку toket

 var token = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")));

Затем я хочу получить данные с этим токеном, но ответ нулевой. Что такое проблема с моим кодом?

 var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.tpg.ua/avia.php#getCities");
            httpWebRequest.ContentType = "application/xml";
            httpWebRequest.Method = "POST";

            httpWebRequest.Headers.Add("Authorization", "Basic " + token);

            var myWebResponse = httpWebRequest.GetResponse();
            var responseStream = myWebResponse.GetResponseStream();
            if (responseStream == null) return null;

            var myStreamReader = new StreamReader(responseStream, Encoding.Default);
            var json = myStreamReader.ReadToEnd();

            responseStream.Close();
            myWebResponse.Close();
...