Именно так мне в настоящее время удалось использовать конкретный веб-сервис Microsoft. Обратите внимание, что он расположен на HTTPS-сервере и требует, чтобы имя пользователя, пароль и файл .cer
были установлены в «корневых центрах сертификации» операционной системы.
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.TransportWithMessageCredential;
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
binding.Security.Message.NegotiateServiceCredential = true;
binding.Security.Message.AlgorithmSuite
= System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
binding.Security.Message.EstablishSecurityContext = true;
EndpointAddress endpoint = new EndpointAddress("https://address.of.service");
//"GreatClient" was created for me automatically by running
//"svcutil.exe https://address.of.service?wsdl"
GreatClient client = new GreatClient(binding, endpoint);
//Username and password for the authentication. Notice that I have also installed
//the required .cer certificate into the system's "root certificate authorities".
client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "password";
//Now I can start using the client as I wish.
Мой вопрос заключается в следующем: Как я могу получить всю необходимую информацию, чтобы я мог использовать веб-службу с прямым POST на https://address.of.serviceи как действительно ли я выполняю POST с С#? Я хочу использовать только POST, где я могу передать необработанные XML-данные с помощью POST напрямую https://address.of.serviceи получить результат в виде необработанных данных XML. Вопрос в том, что это за необработанные данные XML и как именно я должен отправить их с помощью POST?
( Цель этого вопроса: Причина, по которой я спрашиваю, заключается в том, что я хочу использовать эту службу, используя что-то, кроме C# и .NET (например, Ruby или Cocoa в Mac OS X). у меня нет возможности узнать, как это сделать, поскольку у меня нет простого в использовании «svcutil.exe» на других платформах для генерации необходимого кода для меня Вот почему я решил, что просто могу использование службы с использованием обычного POST позволит мне более легко использовать службу на других платформах.)