Liberty 中的 SIP SipServletRequest 和 SipServletResponse 類別

SipServletRequest 和 SipServletResponse 類別類似於您在開發 Web 應用程式時所用的 HttpServletRequest 和 HttpServletResponse 類別。

每一個類別都讓您能夠存取 SIP 訊息中的標頭,並加以操作。由於要求和回應的非同步本質,SipServletRequest 類別也會為要求建立新的回應。當您延伸 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);
        }

如需這些類別的相關資訊,請參閱「SIP Servlet 規格 1.1」JSR 289


指示主題類型的圖示 參照主題

檔名:rwlp_sip_servclass.html