Re: Jira Web Service in .NET
От: vmpire Россия  
Дата: 19.07.10 19:35
Оценка:
Здравствуйте, Smartcat, Вы писали:

S>Меня инетересует возможность обращения к JIRA — веб сервису из C# приложения.

S>Через файл, сгенерированный с помощью wsdl.exe для конкретного URL, все работает отлично.
Интересно, у меня wsdl.exe генерил какую-то чушь. Как Вы это делали?

S>Но вот в чем проблема: я хочу предоставить клиенту возможность самому вбивать данные (URL, login, password, project), чтобы потом отображать у себя в приложении информацию, полученную от веб — сервиса.

S>Насколько я понимаю, с помощью wsdl и сгенерированного класса — обертки для вызовов методов веб — сервиса эта проблема не решится, т.к. клиент может задавать разные адреса JIRA — веб сервисов.
В этом веб-сервисе ксть метод login, дёрнув который можно получить токен юзера и отдавать его потом в другие методы.

S>Возникла идея руками писать нужные SOAP — запросы для получения информации от веб — сервиса (благо их нужно написать всего 2), но это, наверное, неправильно.

S>Подскажите какой — нибудь другой способ, если кто сталкивался с похожей проблемой.
Я использовал WCF вручную. Типа, так (вписан только метод login, можно так же вписать то, что нужно):


    [ServiceContract(Namespace = "")]
    internal interface IJiraService
    {
        [OperationContract]
        [return: MessageParameter(Name = "loginReturn")]
        string login(string username, string password);
    }

    internal class JiraService : System.ServiceModel.ClientBase<IJiraService>, IJiraService
    {
        #region constructors

        public JiraService() { }

        public JiraService(string endpointConfigurationName) : base(endpointConfigurationName) { }

        public JiraService(string endpointConfigurationName, string remoteAddress)
            : base(endpointConfigurationName, remoteAddress) { }

        public JiraService(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress)
            : base(endpointConfigurationName, remoteAddress) { }

        public JiraService(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress)
            : base(binding, remoteAddress) { }

        #endregion constructors

        public string login(string username, string password)
        {
            return base.Channel.login(username, password);
        }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.