Ошибка AXL API Cisco Unified Call Manager (CUCM) при использовании в проекте C # .net

1

Я пытаюсь запустить SQL-запрос через API AXL в среде песочницы CUCM из своего приложения и вернуть результат SQL-запроса. Может кто-нибудь, пожалуйста, дайте мне знать, как мы можем это сделать на примере. Я попытался сделать это, но получил сообщение об ошибке "Основное соединение было закрыто: произошла непредвиденная ошибка при получении", когда WebResponse resp = req.GetResponse(); выполняется. Полный код показан ниже:

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"https://xx.xx.xx.xx/https/0/xx.xx.xx.x/axl/");

        //req.KeepAlive = false;
        req.ProtocolVersion = HttpVersion.Version10;

        req.Method = "POST";
        req.Host = "xx.xx.xx.x:8443";
        req.ProtocolVersion = System.Net.HttpVersion.Version10;
        req.ContentType = "text/xml";
        req.Accept = "text/xml";
        req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("username:password")));

        string strAXLRequest;
        strAXLRequest = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=";
        strAXLRequest += "\"http://schemas.xmlsoap.org/soap/envelope/\"";
        strAXLRequest += " xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\"";
        strAXLRequest += " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
        strAXLRequest += " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> ";
        strAXLRequest += "<SOAP-ENV:Body> ";
        strAXLRequest += "<m:executeSQLQuery xmlns:m=\"http://www.cisco.com/AXL/API/7.0\" sequence=\"1\"> ";
        strAXLRequest += "<m:sql> ";
        strAXLRequest += "SELECT * FROM Device ";
        strAXLRequest += "</m:sql> ";
        strAXLRequest += "</m:executeSQLQuery> ";
        strAXLRequest += "</SOAP-ENV:Body> ";
        strAXLRequest += "</SOAP-ENV:Envelope>";

        System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };


        req.ContentLength = strAXLRequest.Length;

        Stream s = req.GetRequestStream();
        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strAXLRequest);
        s.Write(buffer, 0, strAXLRequest.Length);
        s.Close();
        try
        {
            WebResponse resp = req.GetResponse();

        s = resp.GetResponseStream();
        StreamReader sr = new StreamReader(s);
        string outputString = sr.ReadToEnd(); //Just output XML response
        sr.Close();
        s.Close();
        resp.Close();
        }
        catch (Exception ex)
        {
            string excep = ex.ToString();
        }
    }

}

}

Теги:
soap
cucm
cisco-axl

1 ответ

0
Лучший ответ

Я решил это. Мне просто пришлось заменить пару вещей:

  1. HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"https://xx.xx.xx.xx/https/0/xx.xx.xx.x/axl/");

с

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"https://xx.xx.xx.x:8443/axl/");

  1. Измените мой strAXLRequest на

    strAXLRequest += " <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns=\"http://www.cisco.com/AXL/API/10.0\">"; strAXLRequest += " <soapenv:Header/>"; strAXLRequest += " <soapenv:Body>"; strAXLRequest += " <ns:executeSQLQuery sequence=\"?\">";//strAXLRequest += " <sql>select * from device </sql>"; strAXLRequest += " <sql>" + SQLQuery + "</sql>"; strAXLRequest += " </ns:executeSQLQuery>"; strAXLRequest += " </soapenv:Body>"; strAXLRequest += " </soapenv:Envelope>";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню