一个实例JsSIP.URI类表示SIP URI,并提供一组属性和方法来检索和设置URI的不同部分。
它提供了一种以完整形式(包括参数和头)和AoR形式表示URI的方法。
URI允许自己被克隆,这样就可以从自己形成第二个URI。
例子:
JsSIP.URI
(scheme="sip", user=null, host, port=null, parameters=null, headers=null)
如果没有传递主机值,则此类的实例化将引发异常。
参数(scheme =>指示uri scheme的可选字符串。默认值为sip。user =>字符串,指用户名。host =>字符串,一个host地址,可以是一个IP地址或者一个主机名。parameters =>一个字符串对象,如果是空的话,必须值为null。headers =>具有以字符串或字符串数组形式的属性值组成的可选对象)
var parameters = {
param_name: 'param_value',
valueless_param: null
}
var headers = {
header_name: 'header_value',
multi_header: ['multi_header_value1','multi_header_value2']
}
var uri = new JsSIP.URI('sip', 'alice', 'atlanta.com', 5060, parameters, headers)
uri.toAor() // Returns "sip:alice@atlanta.com"
uri.toString() // Returns "sip:alice@atlanta.com:5060;param_name=param_value;valueless_param?Header-Name=header_value&Multi-Header=multi_header_value1&Multi-Header=multi_header_value2"
实例属性
scheme
设置或者得到一个URI scheme的字符串。
uri.scheme = 'sip';
uri.scheme // Returns 'sip'
uri.scheme = 'sIP';
uri.scheme // Returns 'sip'
user
设置或者得到URI用户,字符串。
uri.user = 'alice';
uri.user // Returns 'alice'
uri.user = 'Alice';
uri.user // Returns 'Alice'
uri.user = 'j@s0n'
uri.toAor() // Returns 'sip:j%40s0n@atlanta.com'
host
设置或者得到URI host,字符串。
uri.host = 'atlanta.com';
uri.host // Returns 'atlanta.com'
uri.host = 'AtLATta.cOm';
uri.host // Returns 'atlanta.com'
port
uri.port = 5060;
uri.port // Returns 5060
uri.port = '5060';
uri.port // Returns 5060
实例方法
setParam
(key, value=null)
使用给定值创建或替换给定的URI参数
参数(key指要修改或创建的指定名称。value指要修改或创建后的值。)
uri.setParam('param_name', 'param_value');
getParam
(key)
获取给定URI参数的值。如果参数集中不存在该参数,则返回undefined。
uri.getParam('param_name'); // Returns 'param_value'
hasParam
(key)
验证给定URI参数是否存在。如果参数存在,则返回true,否则返回false。
uri.hasParam('param_name'); // Returns true
deleteParam
(key)
从URI中删除给定的参数。
uri.deleteParam('param_name');
clearParams
()
删除所有URI参数。
setHeader
(key, value)
使用给定值创建或替换给定的URI标头(value为字符串或数组)
uri.setHeader('header_name','header_value');
uri.setHeader('header_name',['header_value1','header_value2']);
getHeader
(key)
获取给定URI标头的值。返回一个数组,该数组具有给header的value/s,如果标头集中不存在标头,则返回undefined的值。
uri.setHeader('header_name',['header_value1','header_value2']);
uri.getHeader('header_name'); // Returns ['header_value1','header_value2']
uri.setHeader('header_name','header_value');
uri.getHeader('header_name'); // Returns ['header_value']
hasHeader
(key)
验证给定URI标头是否存在。如果标头存在,则返回true,否则返回false。
uri.setHeader('header_name','header_value');
uri.hasHeader('header_name'); // Returns true
deleteHeader
(key)
从URI中删除给定的标头。
uri.delteHeader('header_name');
clearHeaders
()
删除所有URI标头。
uri.clearHeaders();
clone
()
返回克隆的JsSIP.URI的URI实例。
cloned_uri = uri.clone();
cloned_uri === uri // Returns false
toString
()
返回表示URI的字符串。
如RFC 3261的BNF语法中所述,不能显示为未转义的字符是转义的。
uri.toString(); // Returns "sip:alice@atlanta.com:5060?header_name=header_value1&header_name=header_value2"
toAor
()
返回表示URI的AoR的字符串。
如RFC 3261的BNF语法中所述,不能显示为未转义的字符是转义的。
uri.toAor(); // Returns "sip:alice@atlanta.com"
uri.user = 'j%40s0n'
uri.toAor(): // Returns "sip:j%40s0n@atlanta.com"
模块功能
parse
(uri)
根据SIP URI语法规则分析给定的字符串。返回JsSIP.URI实例(如果解析成功),否则未定义。
参数(uri:表示SIP URI的字符串。)
var uri = JsSIP.URI.parse('sip:alice@atlanta.com');