2013-07-19 20 views
14

Używam NSIS do budowania instalatora i jako część tego instalatora otrzymuję szczegóły usługi WCF (tj. Adres URL, nazwa użytkownika i hasło). Muszę zweryfikować te szczegóły.Jak utworzyć klienta usługi web/wcf w C++?

W języku C# I utworzyć usługa Reference i po prostu wykonaj następujące czynności:

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 

Teraz trzeba to zrobić w C++, dzięki czemu może być wywoływana z NSIS (mam badane metody wywoływania C# od NSIS i wszystkie wydają się przesadą dla tego, co chcę zrobić). Udało mi się przekonwertować kod generujący wiązanie i adres punktu końcowego, jednak utknąłem w tworzeniu ServiceClient.

Dodałem do projektu "odniesienie do strony internetowej", ale nie ma odpowiednika nazwy ServiceClient w przestrzeni nazw ServiceClient. To:

ServiceReference::ServiceClient ^service = gcnew ServiceReference::ServiceClient(httpsBinding, endpointAddress); 

nie kompiluje jak:

'ServiceClient' nie jest członkiem 'ServiceReference'

Więc jak mam stworzyć klienta?

+0

Czy umieściłeś dyrektywę "using namespace ServiceMainNamespace" względem dodanej usługi internetowej? – alexbuisson

+0

@alexbuisson - Nie mogę znaleźć tej przestrzeni nazw. Czy możesz dodać link do dokumentacji. – ChrisF

+0

OK, przepraszam, że przestrzeń nazw nie istnieje :) był to tylko przykład do przypomnienia, że ​​w języku C# klasa ServiceClient pochodzi ze złożenia i powinieneś być w stanie znaleźć jego nazwę. Zgromadzenie Thaa powinno znajdować się na liście referencyjnej twojego C++/CLI oraz w pliku .cpp, gdzie używasz 'ServiceClient. 'Musisz umieścić dyrektywę using. Jak w C#! – alexbuisson

Odpowiedz

0

czy próbowałeś gSOAP?

http://gsoap2.sourceforge.net/

to co używamy do WS dostępu * z C++ programów.

+0

Naprawdę nie potrzebuję niczego tak złożonego. Wszystko, co muszę zrobić, to zweryfikować adres URL, nazwę użytkownika i hasło. Nie potrzebuję żadnych danych. – ChrisF

0

możesz zrobić miłą pracę, Stwórz C# DLL, użyj regasm, aby zarejestrować tę bibliotekę DLL, , a następnie możesz jej używać z programu C++.

+0

To jest przesada w przypadku czegoś, co zostało wywołane tylko raz przez instalatora tylko po to, aby sprawdzić szczegóły konta. – ChrisF

Powiązane problemy