Все шаги, необходимые для подключения к веб-службе (предоставляется WSDL и пример SOAP)

Мне нужно подключиться к одному веб-сервису, и это вся информация, которая у меня есть:

  1. https://www.nameofthecompany.es:8443/webservices/functionIshouldcall?wsdl

  2. Пример вызова:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:env="http://address.provided.by.the.company.es"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-5"> <wsse:Username>Username</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Password</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soapenv:Header> <soapenv:Body> <env:functionIshouldcall> <env:parameter1></env:parameter1> </env:functionIshouldcall> </soapenv:Body> </soapenv:Envelope>

  3. Я знаю, что эта функция возвращает строку;


Вот что я сделал до сих пор:

  • Создал ссылку на службу, добавив только адрес WSDL, указанный в пункте 1.

  • Создал экземпляр веб-сервиса и вызвал функцию со всеми необходимыми параметрами, НО не с пользователем и паролем для заголовка.

Как мне поступить? Заранее спасибо.


person LuisAlvarez    schedule 24.09.2017    source источник


Ответы (1)


Это может быть хорошим местом для начала, если вам нужно добавить реквизиты для входа; я предполагаю, что вам, возможно, придется, так как вы каким-то образом их получили. Часть, где вы добавляете свои учетные данные, приведена ниже:

UsernameToken userToken = new UsernameToken(userName, password, PasswordOption.SendHashed);
Service1 serviceProxy = new Service1();
SoapContext requestContext = serviceProxy.RequestSoapContext;
requestContext.Security.Tokens.Add(userToken);

Короче:

  1. Добавьте свои учетные данные, внедрив их в определенный токен, тип которого принадлежит пространству имен Microsoft.Web.Services2.Security.Tokens.
  2. Создайте прокси для своего сервиса (в приведенном выше примере serviceProxy)
  3. Получите доступ к его заголовку запроса через RequestSoapContext вашего сервиса.
  4. Добавьте токен в запрос

Кроме того, я думаю, вы могли бы пропустить часть «?wsdl» в адресе, поскольку она относится к спецификации веб-службы. Как только вышеперечисленное сделано, вы можете попробовать вызвать функцию и посмотреть, как все работает: если функция должна что-то вернуть, проверьте, соответствует ли это вашим ожиданиям.

Конечно, не забудьте поместить свой код в блок try-catch, так как вам, возможно, придется проверить какое-то исключение и посмотреть, что может быть не так.

person Francesco B.    schedule 24.09.2017
comment
Ответы, содержащие только ссылки, обычно не одобряются в Stack Overflow. Со временем ссылки могут атрофироваться и стать недоступными, а это означает, что ваш ответ бесполезен для пользователей в будущем. Было бы лучше, если бы вы могли предоставить общие сведения о своем ответе в своем фактическом сообщении, сославшись на свою ссылку в качестве ссылки. - person Yaroslav Surzhikov; 24.09.2017
comment
Спасибо, что напомнили мне об этом; однако я включил основной код из ссылки в качестве контрмеры: разве этого недостаточно? С наилучшими пожеланиями - person Francesco B.; 24.09.2017
comment
насколько я понимаю - требуются и другие шаги из этой ссылки - person Yaroslav Surzhikov; 25.09.2017