Как создать клиент службы 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 методы плагин" что было действительно излишним для того, что мне нужно было сделать, но мне нужно было решение, которое сработало, и у меня закончилось время.