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