Мы используем версию Net Core 2.0 для вызова внешней службы SOAP.
Связанный метод вызова:
public async void Login(/*string username, string password*/)
{
try
{
OBASEMDMClient client = new OBASEMDMClient();
var loginCredential = new LoginCredential
{
UserNameOrEMail = "username",
Password = "password"
};
var response = await client.LoginAsync(loginCredential);
}
catch (Exception e )
{
throw e;
}
}
ответ, который мы получаем:
Произошла ошибка при получении ответа HTTP на http: /// OBASEMDM. св c. Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с тем, что сервер прерывает контекст HTTP-запроса (возможно, из-за остановки службы).
Но когда мы используем SOAPUI для вызова службы, мы получаем ответ об успешном выполнении:
Запрос SOAPUI:
soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:obas="http://schemas.datacontract.org/2004/07/OBase.MDM.Entity">
<soapenv:Header/>
<soapenv:Body>
<tem:Login>
<tem:credential>
<obas:Password>password</obas:Password>
<obas:UserNameOrEMail>userame</obas:UserNameOrEMail>
</tem:credential>
</tem:Login>
</soapenv:Body>
</soapenv:Envelope>
Ответ SOAPUI:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<LoginResponse xmlns="http://tempuri.org/">
<LoginResult xmlns:a="http://schemas.datacontract.org/2004/07/OBase.MDM.Entity" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Data i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema">session-token</a:Data>
<a:Message>İşlem başarı ile tamamlandı.
Login: 0,0069797Persistent login has been used</a:Message>
<a:Result>true</a:Result>
<a:ResultCode>300</a:ResultCode>
</LoginResult>
</LoginResponse>
</s:Body>
</s:Envelope>
Согласно некоторым вопросам и ответам на SO, мы попытался реализовать частичный ConfigureEndpoint
метод, созданный WCF, следующим образом. По-прежнему получайте ту же ошибку.
static void ConfigureEndpoint(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials)
{
serviceEndpoint.Binding = new BasicHttpBinding();
serviceEndpoint.Binding.Name = "BasicHttpBinding_IOBASEMDM";
serviceEndpoint.Address = new EndpointAddress("http://<address>/OBASEMDM.svc");
}
Это схема WSDL связанной службы: http://213.14.68.91: 83 / OBASEMDM.sv c? WSDL
Как мы можем вызвать эту услугу, используя. Net Core 2.0?