需求
通用消息接口使用servlet作為服務器端服務接口,第三方應用程序通過http post的方式調用servlet,實現與通用消息接口的調用連接。
參數說明如下:
msgTitle:消息標題,描述發送消息的標題
serviceId:服務編號,消息的服務編號
msgDesp:消息描述,消息的詳細內容
msgURL:URL地址,消息中包含的 URL
上述4個參數的參數值可以為空,但參數必須提供。
調用示例
下面一段簡單的html代碼,描述了如何通過網頁進行調用通用消息接口的模式,供參考。
<html><head><title>Sametime通用消息服務</title> </head><body> <formaction="http://stproxy.test.foton.com:9080/ fotonstbot/ServiceServlet" method="post">name="msgTitle" /><br /> 服務編號: <input type="text" id="serviceId" name="serviceId" /><br /> 消息描述: <input type="text" id="msgDesp" name="msgDesp" /><br /> URL: <input type="text" id="msgUrl" name="msgUrl" /><br /> 系統類型: <input type="text" id="sysType" name="sysType" /><br /> 目標用戶: <input type="text" id="targetuser" name="targetuser" style="width:500px;" /><br /> <input type="submit" value="Submit" /> </form> </body></html>
C#調用示例
/// <summary> /// sametime /// </summary> /// <param name="bstrReceiver">sametime用戶</param> /// <param name="bstrTitle">標題</param> /// <param name="lDelayTime">響應時間</param> /// <param name="bstrMsg">內容</param> public static void SendNotify(string bstrReceiver, string bstrTitle, int lDelayTime, string bstrMsg) { string user=""; try { String url = "http://stproxy.foton.com.cn:9081/fotonstbot/ServiceServlet";//html調用的地址 HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url); if(webrequest==null) { RecorderErrorRtx(bstrReceiver,bstrTitle,bstrMsg,"服務端異常",0); return; } webrequest.Method = "POST"; webrequest.Timeout = lDelayTime; webrequest.ContentType = "application/x-www-form-urlencoded"; byte[] bufferTitile = Encoding.GetEncoding("utf-8").GetBytes(bstrTitle); string sbTitle = ""; foreach (byte b in bufferTitile) sbTitle=sbTitle+(string.Format("%{0:X}", b)); byte[] bufferContent = Encoding.GetEncoding("utf-8").GetBytes(bstrMsg); string sbContent = ""; //UTF8注意轉碼 foreach (byte b in bufferContent) sbContent=sbContent+(string.Format("%{0:X}", b)); System.Collections.Hashtable pars=new System.Collections.Hashtable(); pars.Add("msgTitle", sbTitle); pars.Add("serviceId", ""); pars.Add("msgDesp", sbContent); pars.Add("msgUrl", ""); pars.Add("sysType", "QCTS"); user="uid="+bstrReceiver+",cn=users,DC=FOTON;"; pars.Add("targetuser", user); string buffer=""; //發送POST數據 if (!(pars == null || pars.Count == 0)) { foreach (string key in pars.Keys) { buffer=buffer+"&"+key+"="+pars[key].ToString(); } byte[] data = Encoding.UTF8.GetBytes(buffer); using (Stream stream = webrequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } string[] values = webrequest.Headers.GetValues("Content-Type"); WebResponse myResponse= webrequest.GetResponse(); using(Stream resStream = myResponse.GetResponseStream())//得到回寫的流 { StreamReader newReader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string Content = newReader.ReadToEnd(); newReader.Close(); } RecorderRtx(user,bstrTitle,bstrMsg,0); } catch(Exception ex) { RecorderErrorRtx(user,bstrTitle,bstrMsg,ex.Message,0); } }