Использование запроса HttpClient SOAP с ответом MultipartContent - PullRequest
1 голос
/ 28 января 2020

У меня есть Soap запрос HttpClient, который выглядит следующим образом:

var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(300);
client.BaseAddress = new Uri(uri);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xop+xml"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password)));

var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    Content = new StringContent(
        string.Format(SoapEnvelope, xml),
        Encoding.UTF8,
        "application/xop+xml"
    )
};
var response = client.SendAsync(request).Result;
var streamTask = response.Content.ReadAsStreamAsync().Result;

Когда я записываю в файл, он выглядит так:

---- - = _ Part_1186_-1390170025.1580219662117 Тип содержимого: application / xop + xml; кодировка = UTF-8; type = "text / xml"

018b838311-6ade-4699-9ab0-bfd9141e886b ------ = _ Part_1186_-1390170025.1580219662117 Content-Type: application / octet-stream Content-ID: <66da1482-c934-4c83-8cac-18e64c134757@dvo.service.dcs.pi.xxxxxxxxx.com> Content-Transfer-Encoding: двоичное

% PDF-1,3%

... // куча PDF-файлов ....

%% EOF

------ = _ Part_1186_-1390170025.1580219662117 -

PDF является вложением в ответе. Я предполагаю, что части файла, которые имеют ------=_Part_1186_-139017002, означают, что это составной ответ, но из того, что я вижу, HttpResponseMessage не поддерживает ReadAsMultipartAsync(), как HttpWebResponse.

У кого-нибудь есть решение просто получить доступ к вложению из потока?

...