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?
Czy umieściłeś dyrektywę "using namespace ServiceMainNamespace" względem dodanej usługi internetowej? – alexbuisson
@alexbuisson - Nie mogę znaleźć tej przestrzeni nazw. Czy możesz dodać link do dokumentacji. – ChrisF
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