我正在尝试为我的网站使用 Nomadesk API,以允许用户将图像上传到我的保管库,以便我可以在我网站上的特定页面上显示它们。
为了能够使用 Nomadesk API 上传图像,我需要使用 2 件事:
1.https://secure.nomadesk.com/ctrller/api.php?任务=登录&电子邮件=api@nomadesk.com&密码=密码 如果您使用的是正确的电子邮件和密码,这将使用 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# 编程。
谢谢! 干杯!!
你的代码不起作用,因为它只读取第一个节点: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;
}