0

我正在尝试为我的网站使用 Nomadesk API,以允许用户将图像上传到我的保管库,以便我可以在我网站的特定页面上显示它们。

为了能够使用 Nomadesk API 上传图像,我需要使用 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 的子节点。我需要保存 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# 编程。

谢谢!干杯!!

4

1 回答 1

0

您的代码不起作用,因为它只读取第一个节点 : 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;
}
于 2017-04-06T09:23:26.300 回答