C#中调用Servlet示例

所属分类: 软件编程 / C#教程 阅读数: 55
收藏 0 赞 0 分享

需求

通用消息接口使用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); 
    }                                              
}

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多