08-25-2015 12:46 AM - edited 03-01-2019 02:50 AM
Hello everyone
I have some trouble with developt extention mobility 3rd party program
The concept is, I wanna login my account that contain my ext from an app (in general login from Ip phone devices)
Then I found this link Sample Apps- Cisco EMAPI
problem that I found by using this code is ssl problem.. then I've succeed passed it using some code
then till now I'm got stuck whis this
heres the codes
package com.cisco.extensionmobility;
import java.io.*;
import java.net.URLEncoder;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
public class EMAPISample {public static void main(String[] args) throws Exception {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
//To test with insecure connection use the URL as http://cucm-host.com:8080/emservice/EMServiceServlet
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
// Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
URL url = new URL("https://192.168.10.11:8443/emservice/EMServiceServlet");
//Create a java.net URLConnection object to make the HTTP request
URLConnection conn = url.openConnection();
//setDoOutput=true causes the URLConnection to perform a POST operation
conn.setDoOutput(true);
//The request body will be in HTTP form encoded format
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
//Build a string containing the contents of the E/M API XML request - here 'login'
String EMRequest = "<request><appinfo><appid>operator</appid><appcertificate>operator</appcertificate></appinfo>";
EMRequest += "<login><devicename>SEP000000000003</devicename><userid>ivan</userid><deviceprofile>ivan</deviceprofile>";
EMRequest += "<exclusiveduration><time>60</time></exclusiveduration></login></request>";
//URL encode/escape the request
EMRequest = URLEncoder.encode(EMRequest,"UTF-8");
//Build the complete HTTP form request body
EMRequest = "xml="+EMRequest;
//Create an OutputStreamWriter for the URLConnection object and make the request
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(EMRequest);
writer.flush();
//Read the response
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//Output the response to the console
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
writer.close();
reader.close();
}
}
The result is
Error processing request: null
Is there any solution? Please helpp
I've got stuck for many days with this code
Thank you very much
01-14-2016 03:09 AM
Hi Ivan,
Did you had chance to try out the steps mentioned in this url - EM Proxy service
Request to post if there is any further question related to the topic under Extension Mobility API community.
Thanks and Regards,
Geevarghese
04-14-2016 10:10 AM
Sorry to be late for answering, but I have just faced the same situtation. After having solved the isssue of certificate, I solved that one by modifying the case of the inside elements <appID>, etc.
07-29-2016 06:05 AM
Hello,
I work on this Momont on cisco extension mobility, and try to login user id in the IP phone. when i try to do it on the phone directely it's working.
But when I try to execute my code that I have developed , I receive an error code 0 and I ignore this error.
<respone>
<failure>
<error code ="0"> null </error>
</failure>
</response>
can you please help me I inform you that my code is as follows: thank you in advance
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Configuration;
using System.Net.Configuration;
using System.Xml;
namespace EM_Firmwares
{
class EM
{
static void Main(string[] args) {
Login("SEP1CAA07E3743D", "wma", "");
}
public static void Login(string device, string userID, string udp ="")
{
string TempUrl = string.Empty;
string Host = ConfigurationManager.AppSettings["192.168.0.110"];
TempUrl = "http://" + Host + ":8080/emservice/EMServiceServlet";
ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
StringBuilder emRequest = new StringBuilder("");
HttpWebResponse Response;
Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
SettingsSection Section = (SettingsSection)Config.GetSection("system.net/settings");
Section.HttpWebRequest.UseUnsafeHeaderParsing = true;
Config.Save();
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(TempUrl);
Request.ProtocolVersion = System.Net.HttpVersion.Version11;
Request.Timeout = 100000;
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
Request.Accept = "Accept: text/*";
string emUser = ConfigurationManager.AppSettings["MC"];
string emPassword = ConfigurationManager.AppSettings["Azopqslm123!"];
emRequest.Append("xml=<request><appInfo><appID>" + emUser + "</appID><appCertificate>" + emPassword + "</appCertificate></appInfo>");
emRequest.Append("<login><deviceName>" + device + "</deviceName><userID>" + userID + "</userID>");
if(udp != ""){emRequest.Append("<deviceProfile>" + udp + "</deviceProfile>");}
emRequest.Append("<exclusiveDuration><indefinite></indefinite></exclusiveDuration></login></request>");
Request.ContentLength = (long)emRequest.Length;
try
{
Stream RequestStream = Request.GetRequestStream();
RequestStream.Write(System.Text.Encoding.ASCII.GetBytes(emRequest.ToString()), 0, emRequest.Length);
RequestStream.Close();
}
catch (WebException x)
{
Console.WriteLine("Login Error, " + udp + ", " + device + ", " + userID + ", " + x.Message);
return;
}
string Xml = string.Empty;
try
{
Response = (HttpWebResponse)Request.GetResponse();
Stream ResponseStream = Response.GetResponseStream();
StreamReader ReadStream = new StreamReader(ResponseStream, Encoding.UTF8);
Xml = ReadStream.ReadToEnd();
}
catch (WebException x1)
{
Console.WriteLine("Login Error, " + udp + ", " + device + ", " + userID + ", " + x1.Message);
return;
}
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(Xml);
XmlNode node = xdoc.DocumentElement;
XmlNodeList nodeList = node.SelectNodes("success");
if (nodeList.Count == 0)
{
nodeList = node.SelectNodes("failure");
Console.WriteLine("Login Error, " + udp + ", " + device + ", " + userID + ", " + nodeList[0].InnerText);
}
else
{
Console.WriteLine("Login Success, " + udp + ", " + device + ", " + userID + ",");
}
}
public static string Logout(string device)
{
string TempUrl = string.Empty;
string Host = ConfigurationManager.AppSettings["192.168.0.110"];
TempUrl = "http://" + Host + ":8080/emservice/EMServiceServlet";
ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
StringBuilder emRequest = new StringBuilder("");
HttpWebResponse Response;
Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
SettingsSection Section = (SettingsSection)Config.GetSection("system.net/settings");
Section.HttpWebRequest.UseUnsafeHeaderParsing = true;
Config.Save();
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(TempUrl);
Request.ProtocolVersion = System.Net.HttpVersion.Version11;
Request.Timeout = 100000;
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
Request.Accept = "Accept: text/*";
string emUser = ConfigurationManager.AppSettings["MC"];
string emPassword = ConfigurationManager.AppSettings["Azopqslm123!"];
emRequest.Append("xml=<request><appInfo><appID>" + emUser + "</appID><appCertificate>" + emPassword + "</appCertificate></appInfo>");
emRequest.Append("<logout><deviceName>" + device + "</deviceName>");
emRequest.Append("</logout></request>");
Request.ContentLength = (long)emRequest.Length;
try
{
Stream RequestStream = Request.GetRequestStream();
RequestStream.Write(System.Text.Encoding.ASCII.GetBytes(emRequest.ToString()), 0, emRequest.Length);
RequestStream.Close();
}
catch (WebException x)
{
Console.WriteLine("Logout Error, " + device + ", " + x.Message);
return "Error";
}
string Xml = "";
try
{
Response = (HttpWebResponse)Request.GetResponse();
Stream ResponseStream = Response.GetResponseStream();
StreamReader ReadStream = new StreamReader(ResponseStream, Encoding.UTF8);
Xml = ReadStream.ReadToEnd();
}
catch (WebException x1)
{
Console.WriteLine("Logout Error, " + device + ", " + x1.Message);
return "Error";
}
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(Xml);
XmlNode node = xdoc.DocumentElement;
XmlNodeList nodeList = node.SelectNodes("success");
if (nodeList.Count == 0)
{
nodeList = node.SelectNodes("failure");
Console.WriteLine("Logout Error, " + device + ", " + nodeList[0].InnerText);
return "Error";
}
else
{
Console.WriteLine("Logout Success, " + device + ",");
return "success";
}
}
public static string UserQuery(string device)
{
string TempUrl = string.Empty;
string Host = ConfigurationManager.AppSettings["192.168.0.110"];
TempUrl = "http://" + Host + ":8080/emservice/EMServiceServlet";
ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
StringBuilder emRequest = new StringBuilder("");
HttpWebResponse Response;
Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
SettingsSection Section = (SettingsSection)Config.GetSection("system.net/settings");
Section.HttpWebRequest.UseUnsafeHeaderParsing = true;
Config.Save();
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(TempUrl);
Request.ProtocolVersion = System.Net.HttpVersion.Version11;
Request.Timeout = 100000;
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
Request.Accept = "Accept: text/*";
string emUser = ConfigurationManager.AppSettings["MC"];
string emPassword = ConfigurationManager.AppSettings["Azopqslm123!"];
emRequest.Append("xml=<query><appInfo><appID>" + emUser + "</appID><appCertificate>" + emPassword + "</appCertificate></appInfo>");
emRequest.Append("<deviceUserQuery><deviceName>" + device + "</deviceName>");
emRequest.Append("</deviceUserQuery></query>");
Request.ContentLength = (long)emRequest.Length;
try
{
Stream RequestStream = Request.GetRequestStream();
RequestStream.Write(System.Text.Encoding.ASCII.GetBytes(emRequest.ToString()), 0, emRequest.Length);
RequestStream.Close();
}
catch (WebException x)
{
Console.WriteLine("UserQuery Error, " + device + ", " + x.Message);
return "Error";
}
string Xml = "";
try
{
Response = (HttpWebResponse)Request.GetResponse();
Stream ResponseStream = Response.GetResponseStream();
StreamReader ReadStream = new StreamReader(ResponseStream, Encoding.UTF8);
Xml = ReadStream.ReadToEnd();
}
catch (WebException x1)
{
Console.WriteLine("UserQuery Error, " + device + ", " + x1.Message);
return "Error";
}
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(Xml);
XmlNode node = xdoc.DocumentElement;
XmlNodeList nodeList = xdoc.GetElementsByTagName("userID");
if (nodeList.Count == 0)
{
nodeList = xdoc.GetElementsByTagName("none");
if (nodeList.Count != 0)
{
string result = "UserQuery Success, " + device + ", " + "No user logged in (No Error)";
Console.WriteLine(result);
return result;
}
else
{
nodeList = node.SelectNodes("failure");
string error = "UserQuery Error, " + device + ", " + nodeList[0].InnerText.TrimEnd('\r', '\n');
Console.WriteLine(error);
return error;
}
}
else
{
Console.WriteLine("UserQuery Success, " + device + ", " + nodeList[0].InnerText.TrimEnd('\r', '\n'));
return nodeList[0].InnerText;
}
}
public static string DeviceQuery(string userID)
{
string TempUrl = string.Empty;
string Host = ConfigurationManager.AppSettings["192.168.0.110"];
TempUrl = "http://" + Host + ":8080/emservice/EMServiceServlet";
ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
StringBuilder emRequest = new StringBuilder("");
HttpWebResponse Response;
Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
SettingsSection Section = (SettingsSection)Config.GetSection("system.net/settings");
Section.HttpWebRequest.UseUnsafeHeaderParsing = true;
Config.Save();
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(TempUrl);
Request.ProtocolVersion = System.Net.HttpVersion.Version11;
Request.Timeout = 100000;
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
Request.Accept = "Accept: text/*";
string emUser = ConfigurationManager.AppSettings["MC"];
string emPassword = ConfigurationManager.AppSettings["Azopqslm123!"];
emRequest.Append("xml=<query><appInfo><appID>" + emUser + "</appID><appCertificate>" + emPassword + "</appCertificate></appInfo>");
emRequest.Append("<userDevicesQuery><userID>" + userID + "</userID>");
emRequest.Append("</userDevicesQuery></query>");
Request.ContentLength = (long)emRequest.Length;
try
{
Stream RequestStream = Request.GetRequestStream();
RequestStream.Write(System.Text.Encoding.ASCII.GetBytes(emRequest.ToString()), 0, emRequest.Length);
RequestStream.Close();
}
catch (WebException x)
{
Console.WriteLine("DeviceQuery Error, " + userID + ", " + x.Message);
return "Error";
}
string Xml = "";
try
{
Response = (HttpWebResponse)Request.GetResponse();
Stream ResponseStream = Response.GetResponseStream();
StreamReader ReadStream = new StreamReader(ResponseStream, Encoding.UTF8);
Xml = ReadStream.ReadToEnd();
}
catch (WebException x1)
{
Console.WriteLine("DeviceQuery Error, " + userID + ", " + x1.Message);
return "Error";
}
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(Xml);
XmlNode node = xdoc.DocumentElement;
XmlNodeList nodeList = xdoc.GetElementsByTagName("deviceName");
if (nodeList.Count == 0)
{
nodeList = node.SelectNodes("failure");
string error = "UserQuery Error, " + userID + ", " + nodeList[0].InnerText.TrimEnd('\r', '\n');
Console.WriteLine(error);
return error;
}
else
{
Console.WriteLine("DeviceQuery Success, " + userID + ", " + nodeList[0].InnerText.TrimEnd('\r', '\n'));
return nodeList[0].InnerText;
}
}
public static string DeviceProfileQuery(string userID)
{
string TempUrl = string.Empty;
string Host = ConfigurationManager.AppSettings["192.168.0.110"];
TempUrl = "http://" + Host + ":8080/emservice/EMServiceServlet";
ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
StringBuilder emRequest = new StringBuilder("");
HttpWebResponse Response;
Configuration Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
SettingsSection Section = (SettingsSection)Config.GetSection("system.net/settings");
Section.HttpWebRequest.UseUnsafeHeaderParsing = true;
Config.Save();
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(TempUrl);
Request.ProtocolVersion = System.Net.HttpVersion.Version11;
Request.Timeout = 100000;
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
Request.Accept = "Accept: text/*";
string emUser = ConfigurationManager.AppSettings["MC"];
string emPassword = ConfigurationManager.AppSettings["Azopqslm123!"];
emRequest.Append("xml=<query><appInfo><appID>" + emUser + "</appID><appCertificate>" + emPassword + "</appCertificate></appInfo>");
emRequest.Append("<deviceProfileQuery><userID>" + userID + "</userID>");
emRequest.Append("</deviceProfileQuery></query>");
Request.ContentLength = (long)emRequest.Length;
try
{
Stream RequestStream = Request.GetRequestStream();
RequestStream.Write(System.Text.Encoding.ASCII.GetBytes(emRequest.ToString()), 0, emRequest.Length);
RequestStream.Close();
}
catch (WebException x)
{
Console.WriteLine("UDPQuery Error, " + userID + ", " + x.Message);
return "Error";
}
string Xml = "";
try
{
Response = (HttpWebResponse)Request.GetResponse();
Stream ResponseStream = Response.GetResponseStream();
StreamReader ReadStream = new StreamReader(ResponseStream, Encoding.UTF8);
Xml = ReadStream.ReadToEnd();
}
catch (WebException x1)
{
Console.WriteLine("UDPQuery Error, " + userID + ", " + x1.Message);
return "Error";
}
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(Xml);
XmlNode node = xdoc.DocumentElement;
XmlNodeList nodeList = xdoc.GetElementsByTagName("deviceProfileName");
if (nodeList.Count == 0)
{
nodeList = node.SelectNodes("failure");
string error = "UserQuery Error, " + userID + ", " + nodeList[0].InnerText.TrimEnd('\r', '\n');
Console.WriteLine(error);
return error;
}
else
{
Console.WriteLine("UDPQuery Success, " + userID + ", " + nodeList[0].InnerText.TrimEnd('\r', '\n'));
return nodeList[0].InnerText;
}
}
}
}
cordially
Massinissa.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide