API веб-сервиса Nomadesk
Я пытаюсь использовать API-интерфейс Nomadesk для своего веб-сайта, чтобы пользователи могли загружать изображения в мое хранилище, чтобы я мог показывать их на определенной странице моего веб-сайта.
Чтобы иметь возможность загружать изображения с помощью API Nomadesk, мне нужно использовать 2 вещи:
1. https://secure.nomadesk.com/ctrller/api.php?Task=Logon&Email=api@nomadesk.com&Password=password Это ответит токеном в XMl, если вы используете правильный адрес электронной почты и пароль.
2. https://secure.nomadesk.com/ctrller/api.php?Token=rrc1d3ntb53tt6b2vhail6rdtrsxov3v&Task=GetFileservers&ShowUserList=true Здесь я получу все хранилища, доступные для моей учетной записи.
Теперь на мой вопрос:
Первая ссылка даст мне XML-ответ с дочерним узлом с именем Token. Мне нужно сохранить токен и использовать его во второй ссылке (как показано выше).
Как сохранить дочерний узел как сеанс или список, чтобы он автоматически использовал его во второй ссылке, не вводя его в другом классе?
public string VaultSession { get; set; }
public string Url { get; set; }
[XmlElement("Token")]
public string Message { get; set; }
public string Token { get; set; }
public string Task { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public void XMLNomadesk()
{
List<NomadeskVault> XmlToken = new List<NomadeskVault>();
try
{
XmlDocument doc = new XmlDocument();
doc.Load("https://secure.nomadesk.com/ctrller/api.php?" + Task + "/Logon/" + Email + "/Content@JHarry.com/" + Password + "/TestTestTest/");
XmlElement rootElement = doc.DocumentElement;
string Url = null;
foreach (XmlNode child in rootElement.ChildNodes)
{
/*if (child.Name.ToLower() == "token")
{
string token = child.InnerText;
}*/
if (child.Name == "Message")
Message = child.InnerText;
if (child.Name == "Token")
Token = child.InnerText;
}
if (Url != "")
XmlToken.Add(new NomadeskVault(Url, Token, Task, Email, Password));
}
catch
{
}
}
public static NomadeskVault Current
{
get
{
NomadeskVault session =
(NomadeskVault)HttpContext.Current.Session["VaultSession"];
if (session == null)
{
session = new NomadeskVault();
HttpContext.Current.Session["VaultSession"] = session;
}
return session;
}
}
Вся помощь очень ценится!
Структура может быть неправильной, потому что я только начал программировать на C#.
Спасибо! Ура!!
1 ответ
Ваш код не работает, потому что он читает только первый узел: Response
, Вы должны прочитать всю иерархию.
Просто сделайте следующее, чтобы найти все Token
элементы:
XmlDocument document = new XmlDocument();
document.Load("yoururl.com");
XmlNodeList elements = document.GetElementsByTagName("Token");
if (elements.Count == 0)
{
System.Diagnostics.Debug.WriteLine("Token not found");
}
else
{
Token = elements[0].InnerText;
}