SIP SipServletRequest 和 SipServletResponse 类
SipServletRequest 和 SipServletResponse 类与 HttpServletRequest 和 HttpServletResponse 类相似。
SipServletRequest 和 SipServletResponse 类
每个类都提供了访问 SIP 消息中的头并对其进行操作的功能。由于请求和响应的异步性质,此类还要为请求创建新响应。扩展 doInvite 方法时,只会将 SipServletRequest 类传递给该方法。要将响应发送给客户机,必须对 Request 对象调用 createResponse 方法,以创建响应。例如:
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//send back a provisional Trying response
SipServletResponse resp = req.createResponse(100);
resp.send();
由于其异步性质,SIP Servlet 可能看起来有些复杂。但是,像前面代码示例一样简单的代码也能向客户机发送响应。
下面是一个更加复杂的 SIP Servlet 示例。通过使用 SIP Servlet 中包括的以下方法,Servlet 将阻止所有来自 example.com 域之外的呼叫。
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//check to make sure that the URI is a SIP URI
if (req.getFrom().getURI().isSipURI()){
SipURI uri = (SipURI)req.getFrom.getURI();
if (!uri.getHost().equals("example.com")) {
//send forbidden response for calls outside domain
req.createResponse(SipServletResponse.SC_FORBIDDEN).send();
return;
}
}
//proxy all other requests on to their original destination
req.getProxy().proxyTo(req.getRequestURI);
}