private SoapClientMessage BeforeSerialize(WebRequest request, string methodName, object[] parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } SoapClientMethod method = this.clientType.GetMethod(methodName); if (method == null) { throw new ArgumentException(System.Web.Services.Res.GetString("WebInvalidMethodName", new object[1] { (object)methodName })); } else { SoapExtension[] soapExtensionArray = SoapMessage.InitializeExtensions((SoapReflectedExtension[])SoapHttpClientProtocol.CombineExtensionsHelper((Array)this.clientType.HighPriExtensions, (Array)method.extensions, (Array)this.clientType.LowPriExtensions, typeof(SoapReflectedExtension)), (object[])SoapHttpClientProtocol.CombineExtensionsHelper((Array)this.clientType.HighPriExtensionInitializers, (Array)method.extensionInitializers, (Array)this.clientType.LowPriExtensionInitializers, typeof(object))); SoapClientMessage soapClientMessage = new SoapClientMessage(this, method, this.Url); soapClientMessage.initializedExtensions = soapExtensionArray; if (soapExtensionArray != null) { soapClientMessage.SetExtensionStream(new SoapExtensionStream()); } soapClientMessage.InitExtensionStreamChain(soapClientMessage.initializedExtensions); string action = UrlEncoder.EscapeString(method.action, Encoding.UTF8); soapClientMessage.SetStage(SoapMessageStage.BeforeSerialize); if (this.version == SoapProtocolVersion.Soap12) { soapClientMessage.ContentType = ContentType.Compose("application/soap+xml", this.RequestEncoding != null ? this.RequestEncoding : Encoding.UTF8, action); } else { soapClientMessage.ContentType = ContentType.Compose("text/xml", this.RequestEncoding != null ? this.RequestEncoding : Encoding.UTF8); } soapClientMessage.SetParameterValues(parameters); SoapHeaderHandling.GetHeaderMembers(soapClientMessage.Headers, (object)this, method.inHeaderMappings, SoapHeaderDirection.In, true); soapClientMessage.RunExtensions(soapClientMessage.initializedExtensions, true); request.ContentType = soapClientMessage.ContentType; if (soapClientMessage.ContentEncoding != null && soapClientMessage.ContentEncoding.Length > 0) { ((NameValueCollection)request.Headers)["Content-Encoding"] = soapClientMessage.ContentEncoding; } request.Method = "POST"; if (this.version != SoapProtocolVersion.Soap12 && ((NameValueCollection)request.Headers)["SOAPAction"] == null) { StringBuilder stringBuilder = new StringBuilder(action.Length + 2); stringBuilder.Append('"'); stringBuilder.Append(action); stringBuilder.Append('"'); ((NameValueCollection)request.Headers).Add("SOAPAction", ((object)stringBuilder).ToString()); } return(soapClientMessage); } }