Как вызвать веб-сервис Axis через клиент .NET - PullRequest
1 голос
/ 26 мая 2009

У меня есть задача вызвать и подключиться к веб-службе Axis в веб-приложении dotnet.

Веб-сервис сначала требует аутентификацию имени пользователя и пароля, которые следует отправлять в заголовок, только после аутентификации мы можем вызвать любой его метод.

Теперь я не знаю, как передать учетные данные и вызвать веб-сервис.

У меня есть код Java, который показывает, как получить доступ к веб-сервису, но я не знаю, как сделать то же самое в .NET.

Полагаю, мне нужно использовать WSE 3.0.

Вот код Java:

Service  webService = new Service();
Call  calling    = (Call) webService.createCall();
calling.setProperty (Call.USERNAME_PROPERTY, "victor");
calling.setProperty (Call.PASSWORD_PROPERTY, "victor_s");
String userid="userid";
String password="password";
String endpoint= "SERVICEURL";

Service  service = new Service();
Call     call    = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName(endpoint,methodName));
call.setProperty (Call.USERNAME_PROPERTY, "victor");
call.setProperty (Call.PASSWORD_PROPERTY, "victor_s");


String ItineraryDetailsInputXML="<?xml version=\"1.0\" encoding=\"UTF-8\"?><ItineraryDetailsInput lccp_srcstn=\"NDLS\" lccp_dstnstn=\"MAS\" lccp_trnnum=\"2616\" lccp_cls=\"SL\" lccp_resupto=\"MAS\" lccp_brdpt=\"NDLS\" lccp_day=\"27\" lccp_month=\"11\" lccp_year=\"2008\" lccp_qta=\"GN\" lccp_psgnname1=\"SANJEEV KUMAR \" lccp_psgnsex1=\"m\" lccp_psgnage1=\"60\" lccp_psgnberthpref1=\"Side_Upper\" lccp_psgnfoodpref1=\"Veg\" lccp_psgnconc1=\"SRCTZN\" lccp_psgnname2=\"Prasad\" lccp_psgnsex2=\"f\" lccp_psgnage2=\"60\" lccp_psgnberthpref2=\"Side_Lower\" lccp_psgnfoodpref2=\"\" lccp_psgnconc2=\"SRCTNW\" lccp_psgnname3=\"saa\" lccp_psgnsex3=\"m\" lccp_psgnage3=\"05\" lccp_psgnberthpref3=\"\" lccp_psgnfoodpref3=\"\" lccp_psgnconc3=\"\" lccp_psgnname4=\"ssss\" lccp_psgnsex4=\"m\" lccp_psgnage4=\"45\" lccp_psgnberthpref4=\"\" lccp_psgnfoodpref4=\"\" lccp_psgnconc4=\"\" lccp_psgnname5=\"\" lccp_psgnsex5=\"\" lccp_psgnage5=\"\" lccp_psgnberthpref5=\"\" lccp_psgnfoodpref5=\"\" lccp_psgnconc5=\"\" lccp_psgnname6=\"\" lccp_psgnsex6=\"\" lccp_psgnage6=\"\" lccp_psgnberthpref6=\"\" lccp_psgnfoodpref6=\"\" lccp_psgnconc6=\"\" userid=\""+userid+"\" password=\""+password+"\"/>";
StringBuffer buffer = new StringBuffer ();

String requestXml=ItineraryDetailsInputXML;

Я не знаю, как сделать всю эту передачу учетных данных с помощью .NET. Следовательно, я прошу вас, пожалуйста, направлять меня, как я должен решать это. Кроме того, если вы можете, пожалуйста, дайте мне пример кода в .NET, где приведенный выше сценарий может быть сделано.

Ответы [ 2 ]

1 голос
/ 08 ноября 2009

Разбор WSDL в Visual Studio. Перейдите в меню «Проекты» в верхнем меню -> выберите «Добавить веб-ссылку» или «Добавить сервисную ссылку» в зависимости от используемой версии VS.

Тогда вы просто создаете новый клиент в своем коде. У клиента будет что-то вроде «Учетные данные клиента», где вы передаете имя пользователя / pw в это:

WebServiceClient client = new WebServiceClient();
client.ClientCredentials.UserName.UserName = "xyz";
client.ClientCredentials.UserName.Password = "123";

кстати, не должно иметь значения, что вы подключаетесь к веб-сервису AXYS. Весь смысл веб-службы в том, чтобы иметь возможность использовать стандарт, чтобы клиент не имел значения.

1 голос
/ 26 мая 2009

Я бы тоже не знал, без WSDL, но я не вижу причин для вас использовать устаревший код, такой как WSE. Как вы думаете, почему вы должны это сделать?

Кроме того, какую версию .NET вы используете? Что вы пробовали?

Вы не знаете, как вызвать службу Axis из .NET, или вы не знаете, как позвонить на любую службу из .NET?

...