/// <summary> /// Создать HTTP запрос /// </summary> /// <param name="message"> /// SOAP-запрос /// </param> /// <param name="attachment"> /// Вложение /// </param> /// <returns> /// HTTP запрос /// </returns> private HttpsRequest CreateRequest(RequestMessage message, byte[] attachment) { var mime = new MimeModel { ContentLength2 = attachment.Length }; message.AddHrefParameter("PackageBody", mime.DataId); message.GenerateHeader(vcert); mime.Message = message.ToString(); var request = CreateRequest(message.MethodName); request.Head.AppendFormat("Content-Type: multipart/related; type=\"application/xop+xml\";boundary=\"{0}\"\r\n", mime.Boundary); var mimeStr = RequestBuilder.Build(mime); var msgBytes = Encoding.UTF8.GetBytes(mimeStr); var ending = Encoding.UTF8.GetBytes(string.Format("\r\n--{0}--", mime.Boundary)); request.Body = new byte[msgBytes.Length + attachment.Length + ending.Length]; using (var stream = new MemoryStream(request.Body)) { stream.Write(msgBytes, 0, msgBytes.Length); stream.Write(attachment, 0, attachment.Length); stream.Write(ending, 0, ending.Length); stream.Close(); } return(request); }
/// <summary> /// Построить SOAP-запрос с вложением /// </summary> /// <param name="model"> /// MIME-модель /// </param> /// <returns> /// SOAP-запрос с вложением /// </returns> public static string Build(MimeModel model) { return string.Format( @"--{0} Content-Type: text/xml; charset=utf-8 SOAPAction: """" Content-Length: {1} {2} --{0} Content-Type: application/binary Content-Id: <{3}> Content-Length: {4} ", model.Boundary, model.ContentLength1, model.Message, model.DataId, model.ContentLength2); }
/// <summary> /// Построить SOAP-запрос с вложением /// </summary> /// <param name="model"> /// MIME-модель /// </param> /// <returns> /// SOAP-запрос с вложением /// </returns> public static string Build(MimeModel model) { return(string.Format( @"--{0} Content-Type: text/xml; charset=utf-8 SOAPAction: """" Content-Length: {1} {2} --{0} Content-Type: application/binary Content-Id: <{3}> Content-Length: {4} ", model.Boundary, model.ContentLength1, model.Message, model.DataId, model.ContentLength2)); }
/// <summary> /// Создать HTTP запрос /// </summary> /// <param name="message"> /// SOAP-запрос /// </param> /// <param name="attachment"> /// Вложение /// </param> /// <returns> /// HTTP запрос /// </returns> private HttpWebRequest CreateRequest(RequestMessage message, byte[] attachment) { var mime = new MimeModel { ContentLength2 = attachment.Length }; message.AddHrefParameter("PackageBody", mime.DataId); message.GenerateHeader(vcert); mime.Message = message.ToString(); var request = CreateRequest(message.MethodName); request.ContentType = string.Format("multipart/related; type=\"application/xop+xml\";boundary=\"{0}\"", mime.Boundary); var mimeStr = RequestBuilder.Build(mime); var msgBytes = Encoding.UTF8.GetBytes(mimeStr); using (var stream = request.GetRequestStream()) { stream.Write(msgBytes, 0, msgBytes.Length); stream.Write(attachment, 0, attachment.Length); var ending = Encoding.UTF8.GetBytes(string.Format("\r\n--{0}--", mime.Boundary)); stream.Write(ending, 0, ending.Length); stream.Close(); } return request; }