使用webRequest错误编码在C#中格式化Soap请求。

使用webRequest错误编码在C#中格式化Soap请求。,c#,web-services,wcf,soap,wsdl,C#,Web Services,Wcf,Soap,Wsdl,我正在与第三方合作,他们拒绝为发布的WSDL修复他们的方案。问题是SOAP服务所期望的名称空间与WSDL所提供的不同。因此,在我的C#应用程序中,我在使用.Net代理时遇到了很多麻烦。为了解决这个问题,我只想发送一个web请求并打包我的数据。我一直在使用Fiddler将我的请求与代理生成的请求进行比较 代理类似乎正在对请求进行编码,我不确定如何让我的C#webrequest执行相同的操作。起初我以为他们在拍,但事实并非如此。最后,我想让我的webRequest看起来就像来自VisualStudi

我正在与第三方合作,他们拒绝为发布的WSDL修复他们的方案。问题是SOAP服务所期望的名称空间与WSDL所提供的不同。因此,在我的C#应用程序中,我在使用.Net代理时遇到了很多麻烦。为了解决这个问题,我只想发送一个web请求并打包我的数据。我一直在使用Fiddler将我的请求与代理生成的请求进行比较

代理类似乎正在对请求进行编码,我不确定如何让我的C#webrequest执行相同的操作。起初我以为他们在拍,但事实并非如此。最后,我想让我的webRequest看起来就像来自VisualStudio创建的生成代理方法的请求

在Fiddler中,代理请求如下所示:

我的web请求如下所示:

我不明白生成的c代码是如何编码消息的

我发送SOAP请求的C#代码如下

  public   void SendSoap(string messageHeader)
    {
        HttpWebRequest request = CreateWebRequest();
        XmlDocument soapEnvelopeXml = new XmlDocument();
        soapEnvelopeXml.Load(@"c:\temp\ReviewFilingRequest.xml");

        using (Stream stream = request.GetRequestStream())
        using (GZipStream gz = new GZipStream(stream, CompressionMode.Compress))
        {
            soapEnvelopeXml.Save(gz);
        }
        try {

            using (WebResponse response = request.GetResponse())
            {                   
                using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                {
                    string soapResult = rd.ReadToEnd();
                    Console.WriteLine(soapResult);
                }
            }
        }
        catch (System.Exception e)
        {
            Console.WriteLine(e.ToString());
        }
    }


public HttpWebRequest CreateWebRequest()
            {
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"https://Illinois-stage.tylerhost.net/efm/FilingReviewMDEPort.svc");
                webRequest.Headers.Add("SOAPAction:\"urn:oasis:names:tc:legalxml-courtfiling:wsdl:WebServicesProfile-Definitions-4.0/FilingReviewMDEPort/ReviewFilingRequest\"");
                webRequest.Headers.Add("Accept-Encoding: gzip, deflate");           
                webRequest.KeepAlive = true;
                webRequest.Headers.Add(HttpRequestHeader.ContentEncoding, "gzip");

                //  webRequest.Headers.Add("MIME - Version", "1.0");


                webRequest.ContentType = "multipart/related; type=\"application/xop+xml\";start=\"<http://tempuri.org/0>\";boundary=\"uuid:936f2c7e-590a-4f19-b154-ce8285adf18a+id=2\";start-info=\"text/xml\"";
                //webRequest.Accept = "gzip, deflate";

                webRequest.Method = "POST";

                webRequest.ClientCertificates.Add(X509);
                return webRequest;
            }
public void SendSoap(字符串messageHeader)
{
HttpWebRequest请求=CreateWebRequest();
XmlDocument soapEnvelopeXml=新的XmlDocument();
Load(@“c:\temp\ReviewFilingRequest.xml”);
使用(Stream=request.GetRequestStream())
使用(GZipStream gz=newgzipstream(stream,CompressionMode.Compress))
{
soapEnvelopeXml.Save(gz);
}
试一试{
使用(WebResponse=request.GetResponse())
{                   
使用(StreamReader rd=newstreamreader(response.GetResponseStream())
{
字符串soapResult=rd.ReadToEnd();
控制台写入线(soapResult);
}
}
}
捕获(System.e例外)
{
Console.WriteLine(如ToString());
}
}
公共HttpWebRequest CreateWebRequest()
{
HttpWebRequest webRequest=(HttpWebRequest)webRequest.Create(@)https://Illinois-stage.tylerhost.net/efm/FilingReviewMDEPort.svc");
webRequest.Headers.Add(“SOAPAction:\”urn:oasis:names:tc:legalxml-courtfile:wsdl:WebServicesProfile-Definitions-4.0/FilingReviewModel/ReviewFilingRequest\”);
添加(“接受编码:gzip,deflate”);
webRequest.KeepAlive=true;
webRequest.Headers.Add(HttpRequestHeader.ContentEncoding,“gzip”);
//添加(“MIME-Version”,“1.0”);
webRequest.ContentType=“多部分/相关;类型=\”应用程序/xop+xml\“开始=\”“边界=\”uuid:936f2c7e-590a-4f19-b154-ce8285adf18a+id=2\“开始信息=”文本/xml\”;
//webRequest.Accept=“gzip,deflate”;
webRequest.Method=“POST”;
webRequest.ClientCertificates.Add(X509);
返回webRequest;
}

我最终切换了设备并使用了节点。Node有很多库来进行编码


我想我需要了解如何将我的消息编码为SOAP 1.1 MTOM消息