需求

通用消息接口使用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. 小程序的tab切换事件

    index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...

  2. vue获取dom元素注意问题

    mounted(){ setTimeout(()=>{ this.contentToggle(); },1000) }, methods:{ contentToggle(){ console.l ...

  3. RMAN:简单的duplicate创建新数据库

    duplicate to "test" backup location '/home/oracle/11.2.0.4/assistants/dbca/templates/'; du ...

  4. convertView&setTag方法的一点理解

    前言 首先我们要知道setTag方法是干什么的,SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essent ...

  5. Java从控制台接受输入字符

    创建一个类,在该类的主方法中创建Scanner扫描起来封装System类的in输入流,然后提示用户输入身份证号码,并输入身份证号码的位数. 代码如下: import java.util.Scanner ...

  6. centos下快速安装JDK

    Linux系统自带了jdk(当然,如果没有,可以忽略这个步骤),但还是1.4的老版本,所以需要先卸载,然后在安装1.6,卸载步骤如下: [root@localhost ~]# rpm -qa | gr ...

  7. OO模式-Singleton

    讨论一: 既然仅仅有一个类?为什么非要用一个模式来定义?难道就不能用程序猿之间的约定又或者使用伟大的设计模式来完毕? 1)先来说说全局变量的优点,当定义一个全局变量时,不论什么一个函数或者一行代码都能 ...

  8. 06-Linux RPM 命令参数使用详解

    rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由 RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. 常用命令组 ...

  9. java中类相关注意事项

    下面default类就是默认修饰符的类 1.Java中调用类中属性或方法(不管是否静态属性或方法)都要在类的方法中调用,虽然这个太基础,但今天想在类中调用静态类的静态变量,不能调用: 2.Java调用 ...

  10. 执行RF设置顶层测试套件的描述说明

    场景1:通过pybot命令更新套件层描述 命令:pybot -D 套件层描述 -D --doc documentation 设置顶层测试套件的描述说明.说明中下划线将转换为空格, 并且他可能包含简单的 ...