如何解决肥皂消息连接
我对Soap请求有疑问。
这是我的代码。
public void InvokeService()
{
try
{
//Calling CreateSOAPWebRequest method
System.Net.ServicePointManager.ServerCertificateValidationCallback += (se,cert,chain,sslerror) => { return true; };
string action = @"pobierzOswiadczenie ";
XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
HttpWebRequest webRequest = CreateSOAPWebRequest(action);
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml,webRequest);
//Geting response from request
using (WebResponse webResponse = webRequest.GetResponse())
{
using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
{
//reading stream
var ServiceResult = rd.ReadToEnd();
//writting stream result on console
Console.WriteLine(ServiceResult);
Console.ReadLine();
}
}
}
catch (WebException webex)
{
WebResponse errResp = webex.Response;
using (Stream respStream = errResp.GetResponseStream())
{
StreamReader reader = new StreamReader(respStream);
string text = reader.ReadToEnd();
}
}
}
public HttpWebRequest CreateSOAPWebRequest(string action)
{
//Making Web Request
string encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("ezla_ag:ezla_ag"));
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(@"https://193.105.143.152:8001/ws/zus.channel.gabinetoweV2:zla");
//SOAPAction
Req.Headers.Add("SOAPAction",action);
//Content_type
Req.ContentType = "application/soap+xml;charset=\"utf-8\"";
Req.Accept = "text/xml";
Req.Headers["Authorization"] = "Basic " + encoded;
//HTTP method
Req.Method = "POST";
//return HttpWebRequest
return Req;
}
private static XmlDocument CreateSoapEnvelope()
{
XmlDocument SOAPReqBody = new XmlDocument();
SOAPReqBody.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" xmlns:zus=""https://193.105.143.152:8001/ws/zus.channel.gabinetoweV2:zla"">
<soap:Header/>
<soap:Body>
<zus:pobierzOswiadczenie/>
</soap:Body>
</soap:Envelope>");
return SOAPReqBody;
}
private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml,HttpWebRequest webRequest)
{
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
}
我需要从soap请求中获取数据,但始终会收到以下错误消息:“系统无法识别服务EPR'172.16.25.152/ws/zus.channel.gabinetoweV2:zla'的服务端点”
我被卡住了。您知道问题可能在哪里吗?
解决方法
检查一下,然后告诉我还可以吗?
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Transport;
myBinding.MaxBufferPoolSize = int.MaxValue;
myBinding.MaxReceivedMessageSize = int.MaxValue;
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
myBinding.Security.Message.NegotiateServiceCredential = false;
myBinding.Security.Message.EstablishSecurityContext = false;
myBinding.TextEncoding = Encoding.UTF8;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
myBinding.MessageEncoding = WSMessageEncoding.Mtom;
ServicePointManager.ServerCertificateValidationCallback += (sender,cert,chain,sslPolicyErrors) => true;
EndpointAddress adress = new EndpointAddress("https://193.105.143.152:8001/ws/zus.channel.gabinetoweV2:zla");
ServiceReference1.zla_PortTypeClient zla_Port = new zla_PortTypeClient(myBinding,adress);
zla_Port.ChannelFactory.Credentials.UserName.UserName = "ezla_ag";
zla_Port.ChannelFactory.Credentials.UserName.Password = "ezla_ag";
zla_Port.Open();
Console.WriteLine(zla_Port.pobierzOswiadczenie());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。