|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Represents SIP responses. Instances of this class are passed to servlets
when the container receives incoming SIP responses and also, servlets
acting as UA servers or proxies generates SIP responses of their own by
creating SipServletResponses
.
SIP responses has a three-digit status code that indicates the outcome of the corresponding request. Responses with a status code in the range of 100-199 (1xx's) are called provisional or informational and indicate progress in processing of the request. Any response with a status code of 200 or higher is a final response. A UA server may send only one final response per request but this may be preceeded by any number of provisional responses.
2xx responses indicate a successful outcome while 3xx-6xx indicate a variety of non-success conditions.
The summary of status codes is [RFC 3261]:
Field Summary | |
static int |
SC_ACCEPTED
Status code (202) indicating that the request has been accepted for processing, but the processing has not been completed. |
static int |
SC_ADDRESS_INCOMPLETE
Status code (484) indicating that the server received a request with a To (Section 6.37) address or Request-URI that was incomplete. |
static int |
SC_ALTERNATIVE_SERVICE
Status code (380) indicating alternative service. |
static int |
SC_AMBIGUOUS
Status code (485) indicating that the callee address provided in the request was ambiguous. |
static int |
SC_BAD_EXTENSION
Status code (420) indicating that the server did not understand the protocol extension specified in a Require (Section 6.30) header field. |
static int |
SC_BAD_GATEWAY
Status code (502) indicating that the server, while acting as a gateway or proxy, received an invalid response from the downstream server it accessed in attempting to fulfill the request. |
static int |
SC_BAD_REQUEST
Status code (400) indicating Bad Request. |
static int |
SC_BUSY_EVERYWHERE
Status code (600) indicating that the callee's end system was contacted successfully but the callee is busy and does not wish to take the call at this time. |
static int |
SC_BUSY_HERE
Status code (486) indicating that the callee's end system was contacted successfully but the callee is curently not willing or able to take additional call. |
static int |
SC_CALL_BEING_FORWARDED
Status code (181) indicating the call is being forwarded. |
static int |
SC_CALL_LEG_DONE
Status code (481) indicating Call Leg/Transaction does not exist. |
static int |
SC_CALL_QUEUED
Status code (182) indicating the call is queued. |
static int |
SC_DECLINE
Status code (603) indicating that the callee's machine was successfully contacted but the user explicily does not wish to or cannot participate. |
static int |
SC_DOES_NOT_EXIT_ANYWHERE
Status code (604) indicating that the server has authoritative information that the user indicated in the To request field does not exist anywhere. |
static int |
SC_EXTENSION_REQUIRED
Status code (421) indicating that the UAS needs a particular extension to process the request, but this extension is not listed in a Supported header field in the request. |
static int |
SC_FORBIDDEN
Status code (403) indicating that the caller is forbidden to make such requests. |
static int |
SC_GONE
Status code (410) indicating that the requested resource is no longer available at the server an no forwarding address is known. |
static int |
SC_INTERVAL_TOO_BRIEF
Status code (423) indicating that the server is rejecting the request because the expiration time of the resource refreshed by the request is too short. |
static int |
SC_LOOP_DETECTED
Status code (482) indicating that the server received a request with a Via (Section 6.40) path containing itself. |
static int |
SC_MESSAGE_TOO_LARGE
Status code (513) indicating that the server was unable to process the request since the message length exceeded its capabilities. |
static int |
SC_METHOD_NOT_ALLOWED
Status code (405) indicating that the method specified in the Request-Line is not allowed for the address identified byt the Request-URI. |
static int |
SC_MOVED_PERMANENTLY
Status code (301) indicating that the callee has moved permanantly. |
static int |
SC_MOVED_TEMPORARILY
Status code (302) indicating that the callee has moved temporarily. |
static int |
SC_MULTIPLE_CHOICES
Status code (300) indicating Multiple Choices. |
static int |
SC_NOT_ACCEPTABLE
Status code (406) indicating the the resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request. |
static int |
SC_NOT_ACCEPTABLE_ANYWHERE
Status code (606) indicating that the user's agent was contacted successfully but some aspects of the session description such as the requested media, bandwidth, or addressing style were not acceptable. |
static int |
SC_NOT_ACCEPTABLE_HERE
Status code (488) indicating that the response has the same meaning as 606 (Not Acceptable), but only applies to the specific resource addressed by the Request-URI and the request may succeed elsewhere. |
static int |
SC_NOT_FOUND
Status code (404) indicating that the server had definitive information that the user does not exist at the domain specified in the Request-URI. |
static int |
SC_NOT_IMPLEMENTED
Status code (501) indicating that the server does not support the functionality required to fulfill the request. |
static int |
SC_OK
Status code (200) indicating the request succeeded normally. |
static int |
SC_PAYMENT_REQUIRED
Status code (402) indicating that the caller needs to make a payment. |
static int |
SC_PROXY_AUTHENTICATION_REQUIRED
Status code (407) indicating that the client MUST first authenticate itself with the proxy. |
static int |
SC_REQUEST_ENTITY_TOO_LARGE
Status code (413) indicating that the server si refusing to process a request becaus the request entity is larger than the server is willing or able to process. |
static int |
SC_REQUEST_PENDING
Status code (491) indicating that the request was received by a UAS that had a pending request within the same dialog. |
static int |
SC_REQUEST_TERMINATED
Status code (487) indicating that the request was terminated by a BYE or CANCEL request. |
static int |
SC_REQUEST_TIMEOUT
Status code (408) indicating that the server could not produce a response, e.g., a user location, within the time indicated in the Expires request-header field. |
static int |
SC_REQUEST_URI_TOO_LONG
Status code (414) indicating that the server if refusing to service the request because the Request-URI is longer than the server is willing to interpret. |
static int |
SC_RINGING
Status code (180) indicating the server has located the callee, and callee user agent is Ringing the callee. |
static int |
SC_SERVER_INTERNAL_ERROR
Status code (500) indicating that the server encountered an unexpected condition that prevented it from fulfilling the request. |
static int |
SC_SERVER_TIMEOUT
Status code (504) indicating that the server did not receive a timely response from an external server it accessed in attempting to process the request. |
static int |
SC_SERVICE_UNAVAILABLE
Status code (503) indicating that the server is currently unable to handle the request due to a temporary overloading or maintenance of the server. |
static int |
SC_SESSION_PROGRESS
Status code (183) carries miscellaneous call progress information. |
static int |
SC_TEMPORARLY_UNAVAILABLE
Status code (480) indicating that the callee's end system was contacted successfully but the callee is currently unavailable (e.g., not logged in or logged in such a manner as to preclude communication with the callee). |
static int |
SC_TOO_MANY_HOPS
Status code (483) indicating that the server received a request that contains more Via entries (hops) (Section 6.40) than allowed by the Max-Forwards (Section 6.23) header field. |
static int |
SC_TRYING
Status code (100) indicating the server is trying to locate the callee. |
static int |
SC_UNAUTHORIZED
Status code (401) indicating that the caller is unauthorized to make this request. |
static int |
SC_UNDECIPHERABLE
Status code (493) indicating that the request was received by a UAS that contained an encrypted MIME body for which the recipient does not possess or will not provide an appropriate decryption key. |
static int |
SC_UNSUPPORTED_MEDIA_TYPE
Status code (415) indicating that the server is refusing to service the request because the message body of the request is in a format not supported by the requested resource for the requested method. |
static int |
SC_UNSUPPORTED_URI_SCHEME
Status code (416) indicating that the server cannot process the request because the scheme of the URI in the Request-URI is unknown to the server. |
static int |
SC_USE_PROXY
Status code (305) indicating that he call can be better handled by the specified proxy server. |
static int |
SC_VERSION_NOT_SUPPORTED
Status code (505) indicating that the server does not support, the SIP protocol version that was used in the request message. |
Method Summary | |
SipServletRequest |
createAck()
Returns an ACK request object corresponding to this response. |
javax.servlet.ServletOutputStream |
getOutputStream()
Always returns null. |
Proxy |
getProxy()
Returns the Proxy object associated with the
transaction of this SIP response object. |
java.lang.String |
getReasonPhrase()
Returns the reason phrase for this response object. |
SipServletRequest |
getRequest()
Returns the request associated with this response. |
int |
getStatus()
Returns the status code of this response object. |
java.io.PrintWriter |
getWriter()
Always returns null. |
void |
send()
Causes this response to be sent. |
void |
sendReliably()
Requests that this response be sent reliably using the 100rel extension defined in RFC 3262. |
void |
setStatus(int statusCode)
Sets the status code of this response object. |
void |
setStatus(int statusCode,
java.lang.String reasonPhrase)
Sets the status code and reason phrase of this response object. |
Methods inherited from interface javax.servlet.ServletResponse |
flushBuffer, getBufferSize, getCharacterEncoding, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setContentLength, setContentType, setLocale |
Field Detail |
public static final int SC_TRYING
public static final int SC_RINGING
public static final int SC_CALL_BEING_FORWARDED
public static final int SC_CALL_QUEUED
public static final int SC_SESSION_PROGRESS
public static final int SC_OK
public static final int SC_ACCEPTED
public static final int SC_MULTIPLE_CHOICES
public static final int SC_MOVED_PERMANENTLY
public static final int SC_MOVED_TEMPORARILY
public static final int SC_USE_PROXY
public static final int SC_ALTERNATIVE_SERVICE
public static final int SC_BAD_REQUEST
public static final int SC_UNAUTHORIZED
public static final int SC_PAYMENT_REQUIRED
public static final int SC_FORBIDDEN
public static final int SC_NOT_FOUND
public static final int SC_METHOD_NOT_ALLOWED
public static final int SC_NOT_ACCEPTABLE
public static final int SC_PROXY_AUTHENTICATION_REQUIRED
This status code is used for applications where access to the communication channel (e.g., a telephony gateway) rather than the callee requires authentication.
public static final int SC_REQUEST_TIMEOUT
public static final int SC_GONE
public static final int SC_REQUEST_ENTITY_TOO_LARGE
If the condition is temporary, teh server SHOULD include a Retry-After header field to indicate that it is temporary and after what time the client MAY try again.
public static final int SC_REQUEST_URI_TOO_LONG
public static final int SC_UNSUPPORTED_MEDIA_TYPE
public static final int SC_UNSUPPORTED_URI_SCHEME
public static final int SC_BAD_EXTENSION
public static final int SC_EXTENSION_REQUIRED
public static final int SC_INTERVAL_TOO_BRIEF
public static final int SC_TEMPORARLY_UNAVAILABLE
This status is also returned by a redirect server that recognizes the user identified by the Request-URI, but does not currently have a valide forwarding location for that user.
public static final int SC_CALL_LEG_DONE
This status is returned under two conditions: The server received a BYE request that does not match any existing call leg or the server received a CANCEL request that does not match any existing transaction. (A server simply discards an ACK referring to an unknown transaction.)
public static final int SC_LOOP_DETECTED
public static final int SC_TOO_MANY_HOPS
public static final int SC_ADDRESS_INCOMPLETE
Note: This status code allows overlapped dialing. With overlapped dialing, the client does not know the length of the dialing string. It sends strings of increasing lengths, prompting the user for more input, until it no longer receives a 484 status response.
public static final int SC_AMBIGUOUS
Revealing alternatives can infringe on privacy concerns of the user or the organization. It MUST be possible to configure a server to respond with status 404 (Not Found) or to suppress the listing of possible choices if the request with the URL lee@example.com.
485 Ambiguous SIP/2.0 Contact: Carol Lee <sip:carol.lee@example.com> Contact: Ping Lee <sip:p.lee@example.com> Contact: Lee M. Foote <sip:lee.foote@example.com>
Some email and voice mail systems provide this functionality. A status code separate from 3xx is used since the semantics are different: for 300, it is assumed that the same person or sevice will be reached by the choices provided. While an automated choice or sequential search makes sense for a 3xx response, user intervention is required for a 485 response.
public static final int SC_BUSY_HERE
public static final int SC_REQUEST_TERMINATED
public static final int SC_NOT_ACCEPTABLE_HERE
public static final int SC_REQUEST_PENDING
public static final int SC_UNDECIPHERABLE
public static final int SC_SERVER_INTERNAL_ERROR
public static final int SC_NOT_IMPLEMENTED
public static final int SC_BAD_GATEWAY
public static final int SC_SERVICE_UNAVAILABLE
public static final int SC_SERVER_TIMEOUT
public static final int SC_VERSION_NOT_SUPPORTED
public static final int SC_MESSAGE_TOO_LARGE
public static final int SC_BUSY_EVERYWHERE
public static final int SC_DECLINE
public static final int SC_DOES_NOT_EXIT_ANYWHERE
public static final int SC_NOT_ACCEPTABLE_ANYWHERE
Method Detail |
public SipServletRequest getRequest()
Proxying applications can use the request URI obtained from the request object to correlate an incoming response to one of the several destinations it has been proxied to.
public int getStatus()
The Status-Code is a 3-digit integer result code that indicates the outcome of the attempt to understand and satisfy the request.
public void setStatus(int statusCode)
statusCode
- status code of this responsepublic void setStatus(int statusCode, java.lang.String reasonPhrase)
statusCode
- status code of this responsereasonPhrase
- short textual description of the status codepublic java.lang.String getReasonPhrase()
public javax.servlet.ServletOutputStream getOutputStream() throws java.io.IOException
Message content can be set using the SipServletMessage.setContent(java.lang.Object, java.lang.String)
method.
getOutputStream
in interface javax.servlet.ServletResponse
public java.io.PrintWriter getWriter() throws java.io.IOException
Message content can be set using the SipServletMessage.setContent(java.lang.Object, java.lang.String)
method.
getWriter
in interface javax.servlet.ServletResponse
public Proxy getProxy()
Proxy
object associated with the
transaction of this SIP response object. Such a Proxy object exists
if this is a response for a previously proxied request. Otherwise,
a Proxy
object does not exist, and null is returned.
Note that the container must return the same
Proxy
instance whenever a servlet invokes
getProxy
on messages belonging to the same transaction.
In particular, a response to a proxied request is associated with
the same Proxy
object as is the original request.
Proxy
object associated with this response's
transaction, or null if this response was not received for a
previously proxied requestpublic void sendReliably() throws Rel100Exception
Applications can test whether the container supports the 100rel
extension by checking whether an attribute with name
"javax.servlet.sip.100rel" exists in the ServletContext
and has a value which equals Boolean.TRUE.
Rel100Exception
- if one of the conditions for using the
100rel extension is not satisfied.public void send() throws java.io.IOException
send
in interface SipServletMessage
java.io.IOException
- if a transport error occurs when trying to
send this responsejava.lang.IllegalStateException
- if this response was received from
downstream or if it has already been sentpublic SipServletRequest createAck()
Please note that applications do not generate ACKs for non-2xx responses, as this is done by the container itself.
java.lang.IllegalStateException
- if the transaction state is such that
it doesn't allow an ACK to be sent now, e.g. if the original
request was not an INVITE, if this response is provisional only,
or if an ACK has already been generated
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |