需求

通用消息接口使用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,"服务端异常",);
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 == ))
{ 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, , 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,); } catch(Exception ex)
{
RecorderErrorRtx(user,bstrTitle,bstrMsg,ex.Message,);
}
}

[C#/Java] C#中调用Servlet示例的更多相关文章

  1. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

  2. Java程序中调用Python脚本的方法

    在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...

  3. Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决

    问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...

  4. 如何在java代码中调用一个web项目jsp或者servlet

    有时候需要调用一个web项目的jsp或者servlet,但是执行内部的代码,并不是打开jsp,例如需要在一段java代码中清除一个web项目中的缓存,那么可以把清除缓存的代码放在该web项目的一个se ...

  5. Java WEB中的servlet

    1.什么是servlet 2.servlet实现的过程 3.servlet的生命周期 4.servlet实现类及实现方法 什么是servlet Servlet 是在服务器上运行的小程序.这个词是在 J ...

  6. java web 中的servlet讲解

    首先,解释一下解释一下什么是servlet?说一说Servlet的生命周期? servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet ...

  7. 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...

  8. Generate PDF in Sourcing through concurrent request,在EBS java并发中调用指定am的方法

    package oracle.apps.pon.printing.cp; import java.io.InputStream; import java.io.FileOutputStream; im ...

  9. Java构造函数中调用构造函数

    在Java中,当为一个类创建了多个构造函数时,有时想在一个构造函数中调用另一个构造函数以减少代码量.这时可以使用this关键字来实现. 通常,当使用this关键字时,它意味着"这个对象&qu ...

随机推荐

  1. Linux服务器svn与项目同步

    命令:svn checkout svn://192.168.67.131/trunk/w1

  2. 【WPF】附加属性

    一直都对附加属性理解很模糊,今天看了一篇文章,恍然大悟,用个Demo掩饰一下对附加属性的理解 附加属性,简单的理解就是给一个对象外在的定义一个属性,使得该对象拥有和使用该属性,最典型的是Grid.Ro ...

  3. How to use base class's assignment operator in C++

    看了android下的代码,好长时间没看了,有个关于C++的知识点不是很清楚,查了下: 如何使用基类中的赋值运算符? 引述自http://stackoverflow.com/questions/122 ...

  4. JUC回顾之-ArrayBlockingQueue底层实现和原理

    ArrayBlockingQueue的原理和底层实现的数据结构 : ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列,可以按照 FIFO(先进先出)原则对元素进行排序. 线程安 ...

  5. Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment

    alpine linux 真是不错.小巧.迅捷! 官方的各个版本的alpine镜像内没有带图形环境的.那我们如何构建自己的桌面图形环境呢? 其实:这个问题,在起官网的wiki内有指南,我们根据那些相关 ...

  6. mysql查询两个日期之间相差多少天?

    需求描述: 在mysql中,查看两个日期之间相差多少天 操作过程: 1.通过datediff函数,查看两个日期之间相差多少天 mysql> select datediff('2018-06-26 ...

  7. 2018年7月份,python上传自己的包库到pypi官网的方法

    最近pypi官网进行了更新,老的上传网址作废了.记录下上传到pypi的方法 0.去pypi官网注册账号,没账号是不可能上传的,想想也是那不乱套了吗,注册后会收到一个邮件需要点击然后重新登录 1.目录就 ...

  8. python使用tkinter写带界面的工具

    python一般用来写纯脚本的居多,但也可以做有视图的产品出来,例如做网页和客户端工具.做成工具的好处是,让不懂代码的人也能使用,不需要去修改代码里面的参数,如果使用次数频繁,甚至比纯脚本跟节约时间: ...

  9. 为什么React事件处理函数必须使用Function.bind()绑定this?

    最近在React官网学习Handling Events这一章时,有一处不是很明白.代码如下: class Toggle extends React.Component { constructor(pr ...

  10. java图片裁剪和java生成缩略图

    一.缩略图 在浏览相冊的时候.可能须要生成相应的缩略图. 直接上代码: public class ImageUtil { private Logger log = LoggerFactory.getL ...