Classes SIP SipServletRequest e SipServletResponse
As classes SipServletRequest e SipServletResponse são similares às classes HttpServletRequest e HttpServletResponse.
Classes SipServletRequest e SipServletResponse
Cada classe fornece a capacidade de acessar os cabeçalhos na mensagem SIP e manipulá-los. Devido à natureza assíncrona dos pedidos e respostas, essa classe também é o local para criar novas respostas para os pedidos. Quando você estende o método doInvite, apenas a classe SipServletRequest é transmitida para o método. Para enviar uma resposta ao cliente, você deve chamar o método createResponse no objeto Request para criar uma resposta. Por Exemplo:
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//devolver uma resposta Tentando provisional
SipServletResponse resp = req.createResponse(100);
resp.send();
Devido à sua natureza assíncrona, os servlets SIP podem parecer complicados. No entanto, algo tão simples como a amostra de código anterior envia uma resposta a um cliente.
A seguir há um exemplo mais complexo de um servlet SIP. Com o seguinte método incluído em um servlet SIP, o servlet bloqueia todas as chamadas que não vêm do domínio example.com.
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//verificar se a URI é uma URI SIP
if (req.getFrom().getURI().isSipURI()){
SipURI uri = (SipURI)req.getFrom.getURI();
if (!uri.getHost().equals("example.com")) {
//enviar resposta forbidden para chamadas fora do domínio
req.createResponse(SipServletResponse.SC_FORBIDDEN).send();
return;
}
}
//utilizar proxy em todos os outros pedidos em seu destino original
req.getProxy().proxyTo(req.getRequestURI);
}