sampos Ответов: 1

WSDL SOAP с использованием SSL в VB.NET применение


новое в WSDL SOAP использование SSL в vb.net приложение, испытывающее проблемы с интеграцией.

Что я уже пробовал:

Привет, я новичок в WSDL и soap, мне нужно интегрировать устройство, нам предоставили файл WSDL и файл .jks, который, как я думаю, предназначен для SSL-сертификата. Я успешно ссылался на WSDL, но после этого у меня не было ни малейшего представления, что делать, особенно если я ставлю IP-адрес и порт устройства и все такое. Как отправить его с помощью SSL?

Любая помощь будет очень признательна.

Спасибо

1 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Прежде всего...- Не думаю .Net может работать с файлами следующих как источник сертификатов... вам нужны pfx-файлы...
Смотрите здесь один из вариантов, как конвертировать между ними или подключить поставщика устройства для одного... Создайте PKCS12 (. pfx / .p12) из хранилища ключей JKS / JAVA[^]

Что касается WSDL...В тот момент, когда вы упоминаемый[^] VS создал класс-оболочку, используя имя, которое вы присвоили ссылке...
Используя это имя класса, вы можете создать объект и вызвать все открытые методы веб-сервера...

WebReference service = new WebReference();

X509Certificate2 cert = new X509Certificate2();
cert.Import("client_cert.pfx", "[the password]", DefaultKeySet);

service.Url = "[the actual server address]";

service.ClientCertificates.Add(cert);

service.Method();


(Огорченный. Просто понял, что ты просил. VB.NET... Разница только в синтаксисе языка...)

[РЕДАКТИРОВАТЬ]
Согласно Вашим комментариям...
Вы можете ссылаться на WSDL двумя способами: веб-ссылка (более старая) и ссылка на службу (более новая)... В каждом случае есть разные способы установить целевой адрес...
Для Веб-Ссылки:
WebReference.OSAccessService oA = new WebReference.OSAccessService( );
oA.Url = "address-goes-here";

Для Справки По Обслуживанию:
ServiceReference.OSAccessClient oB = new ServiceReference.OSAccessClient( );
oB.Endpoint.Address = new System.ServiceModel.EndpointAddress( "address-goes-here" );


sampos

Здравствуйте, спасибо за быстрый ответ.
Я попробовал ваше решение проблемы "service. url" и " service.Значении clientcertificates.Add (cert)" of web reference is recongized, возможно ли, что что-то не так с файлом WSDL, который они мне дали?

Kornfeld Eliyahu Peter

Вряд ли... Может быть, то, как вы ссылались на него, неправильно?
Можем ли мы указать нам на WSDL? Он публичный?

sampos

Нет, это локальный файл WSDL, который они мне дали. Есть ли у меня возможность отправить вам файл в частном порядке?

Спасибо

sampos

Привет еще раз, это ссылка на файл: https://dl.dropboxusercontent.com/u/18176784/Client.wsdl

Надеюсь, вы сможете проверить это и дать обратную связь о том, что я делаю не так.
Спасибо снова.

Kornfeld Eliyahu Peter

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

sampos

Большое спасибо, сэр, еще один вопрос, с Вашими указаниями, я прибыл с этим кодом:

X509certificate2 с сертификата = новый x509certificate2 с();
сертификат.Импорт ("client_cert.pfx", "[пароль]", X509KeyStorageFlags.DefaultKeySet);

Значение servicereference1.OSAccessClient oB = new ServiceReference1.OSAccessClient( );

X509store store=новый X509Store(имя магазина.Мой, Расположение Магазина.Текущий пользователь) ;
магазин.Open (OpenFlags.Чтение и запись);

Обь.Конечную точку.Адрес = новая система.Сервис-модель.EndpointAddress ("адрес-идет-сюда" );
магазин.Добавить (сертификат);

Правильно ли это?

затем, чтобы вызвать функцию WSDl, я просто использую что-то вроде oB.AddONT ()?

Kornfeld Eliyahu Peter

Да и еще раз да.
Это кажется правильным, и вы просто вызываете метод-член, остальное делает ссылочная оболочка...

sampos

Большое спасибо. Кстати, когда я вызывал метод члена типа oB.AddONT (OS_Header), что означает/делает параметр OS_Header? Что я туда кладу?

sampos

Привет, извините, у меня все еще есть проблема с этим, строка давала мне ошибку "ССЫЛКА на объект не установлена на экземпляр объекта".:

Dim cert как новый X509Certificate2

сертификат.Импорт ("client.p12", "Changeme_123", X509KeyStorageFlags.DefaultKeySet)


Dim oB как новый ServiceReference1.OSAccessClient

Dim store As X509Store = New X509Store(StoreName.Мой, Расположение Магазина.Текущий пользователь)

магазин.Open (OpenFlags.Чтение и запись)

Обь.Конечную точку.Адрес = Новая Система.Сервис-модель.Адрес endpointaddress("http://1.1.1.2:55555/wsdl")
магазин.Добавить (сертификат)

Dim AX как ServiceReference1.ADDONT_T = новое значение servicereference1.ADDONT_T

Топор.объект.Дев = "dfgdfgdf" ------> Это где я получаю сообщение об ошибке "объекта не задана ссылка на экземпляр объекта."

Обь.ADDONT("", ТОПОР)

Обь.Рядом()


Я думаю, что AX должен инициализировать соединение, но я просто не знаю, как это сделать?