PHP Nusoap Webservice по HTTPS с клиентом C # - PullRequest
0 голосов
/ 17 марта 2011

Я использую библиотеку nusoap для создания веб-сервиса с PHP (например: http://www.sanity -free.org / 125 / php_webservices_and_csharp_dotnet_soap_clients.html )
Клиент находится на C #. С http все работает нормально.

With https, I have an error in visual studio when trying to add the service : "There was an error dowloading <a href="https://service?wsdl" rel="nofollow">https://service?wsdl</a>". The request was aborted : could not create SSL/TLS secure channel.

Это связано со схемами на http?

<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://services/soap/SimpleService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="<strong>http:</strong>//services/soap/SimpleService"><br>

В targetNamespace нет https ... Я не знаю, как решить это в коде.

Спасибо за помощь!

1 Ответ

0 голосов
/ 12 апреля 2011

У меня была та же проблема, так как она работала нормально на http, но не была на https.Просто чтобы поделиться всем моим путем программирования здесь, чтобы помочь другим.

Первоначально я следовал этому руководству: php webservice с nusoap и c # .Единственное, что он не скажет в этом уроке, это то, что вы должны поместить весь php-код в один php-файл (но, на самом деле, это может быть просто на самом деле, так что никаких реальных претензий по этому поводу).сначала попробовал это по http, и я был рад, что это сработало, но позже мне пришлось перейти на ssl, и, поскольку я тестировал его на локальном сервере, у меня был самоподписанный сертификат, и я получил ошибку: «Базовое соединение было закрыто: Не удалось установить доверительные отношения для безопасного канала SSL / TLS. "

Я гуглил и, наконец, нашел решение по этой ссылке здесь: damir dobric blog

В основном выследует добавить строку:

ServicePointManager.ServerCertificateValidationCallback += 
new System.Net.Security.RemoteCertificateValidationCallback(
customXertificateValidation);

и добавить реализацию функции customXertificateValidation для возврата true (это то, что я сделал для целей тестирования).

...