Здравствуйте.
Меня инетересует возможность обращения к JIRA — веб сервису из C# приложения.
Через файл, сгенерированный с помощью wsdl.exe для конкретного URL, все работает отлично.
Но вот в чем проблема: я хочу предоставить клиенту возможность самому вбивать данные (URL, login, password, project), чтобы потом отображать у себя в приложении информацию, полученную от веб — сервиса.
Насколько я понимаю, с помощью wsdl и сгенерированного класса — обертки для вызовов методов веб — сервиса эта проблема не решится, т.к. клиент может задавать разные адреса JIRA — веб сервисов.
Возникла идея руками писать нужные SOAP — запросы для получения информации от веб — сервиса (благо их нужно написать всего 2), но это, наверное, неправильно.
Подскажите какой — нибудь другой способ, если кто сталкивался с похожей проблемой.
Здравствуйте, 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);
}
}
Здравствуйте, vmpire, Вы писали:
V>Интересно, у меня wsdl.exe генерил какую-то чушь. Как Вы это делали?
да вот как — то так:
wsdl
http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl /language:cs /out:d:\\JiraSoapServiceService.cs
Здравствуйте, Smartcat, Вы писали:
S>wsdl http://jira.atlassian.com/rpc/soap/jirasoapservice-v2?wsdl /language:cs /out:d:\\JiraSoapServiceService.cs
А пробовал подменять свойство Url у экземпляра JiraSoapServiceService после создания? Разве этого не достаточно?