Как создать клиент службы web/wcf в C++?
я использую NSIS для создания установщика, и как часть этого установщика я получаю сведения о службе WCF (т. е. Url, имя пользователя и пароль). Мне нужно проверить эти детали.
в C# я создаю ссылку на службу и просто сделать следующее:
var proxy = new ServiceClient(httpsBinding, serviceEndpointAddress);
proxy.ClientCredentials.UserName.UserName = userName;
proxy.ClientCredentials.UserName.Password = password;
try
{
proxy.Open();
}
catch (EndpointNotFoundException ex)
{
// Return the end point's not valid
}
etc
теперь мне нужно сделать это на C++, чтобы его можно было вызвать из NSIS (я исследовал методы вызова C# из NSIS, и все они кажутся излишними для того, что я хочу сделать). Мне удалось преобразовать код, который создает привязку и адрес конечной точки, однако я застрял на создании ServiceClient
.
я добавил "веб-ссылку" на проект, но нет эквивалента ServiceClient
на ServiceReference
пространство имен. Это:
ServiceReference::ServiceClient ^service = gcnew ServiceReference::ServiceClient(httpsBinding, endpointAddress);
не компилируется так:
'ServiceClient': не является членом 'ServiceReference'
Итак, как мне создать клиента?
3 ответов
вы пробовали gSOAP?
http://gsoap2.sourceforge.net/
Это то, что мы используем для доступа к WS* из программ на C++.
вы можете сделать хорошую работу вокруг, Создайте DLL C#, используйте regasm для регистрации этой DLL, затем вы можете использовать его из программы на языке C++.
в конце концов я пошел с использованием NSIS "вызов .NET DLL методы плагин" что было действительно излишним для того, что мне нужно было сделать, но мне нужно было решение, которое сработало, и у меня закончилось время.