Измените свой метод InsertSoapEnvelope на этот:
private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest)
{
using (Stream stream = webRequest.GetRequestStream())
{
StringWriter sw = new StringWriter();
XmlTextWriter tx = new XmlTextWriter(sw);
soapEnvelopeXml.WriteTo(tx);
string str = sw.ToString();
Console.WriteLine(soapEnvelopeXml.ToString());
ASCIIEncoding Encode = new ASCIIEncoding();
var arr = Encode.GetBytes(EncodeStringToBase64(str));
stream.Write(arr, 0, arr.Length);
}
}
Если вы Console.Writeline
XML.ToString()
, он даст вам ссылку. Идея состоит в том, чтобы записать XML
в TextWriter
, который использует StringWriter
. Как только вы сделали это, вы должны сначала encode
, а затем преобразовать его в byte array
. Это просто вопрос записи в поток. в качестве параметров вы указываете массив, смещение 0 и длину байтового массива.