Classes SipServletRequest et SipServletResponse SIP
Les classes SipServletRequest et SipServletResponse sont similaires aux classes HttpServletRequest et HttpServletResponse.
Classes SipServletRequest et SipServletResponse
Chaque classe vous permet d'accéder aux en-têtes des messages SIP et de les manipuler. En raison de la nature asynchrone des requêtes et des réponses, cette classe est également l'espace de création de nouvelles réponses pour les requêtes. Lorsque vous étendez la méthode doInvite, seule la classe SipServletRequest est transmise à la méthode. Pour envoyer une réponse au client, vous devez appeler la méthode createResponse sur l'objet Request afin de créer une réponse. Exemple :
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//renvoyer une réponse Trying provisoire
SipServletResponse resp = req.createResponse(100);
resp.send();
En raison de leur nature asynchrone, les servlets SIP peuvent sembler compliqués. Cependant, un exemple de code aussi simple que celui donné ci-dessus envoie une réponse à un client.
Voici un exemple plus complexe d'un servlet SIP. Avec la méthode suivante incluse dans un servlet SIP, le servlet bloque tous les appels qui ne proviennent pas du domaine example.com.
protected void doInvite(SipServletRequest req) throws
javax.servlet.ServletException, java.io.IOException {
//vérifier que l'URI est un URI SIP
if (req.getFrom().getURI().isSipURI()){
SipURI uri = (SipURI)req.getFrom.getURI();
if (!uri.getHost().equals("example.com")) {
//envoyer un réponse forbidden pour les appels hors du domaine
req.createResponse(SipServletResponse.SC_FORBIDDEN).send();
return;
}
}
//proxy toutes les requêtes sur leur destination originale
req.getProxy().proxyTo(req.getRequestURI);
}