在Python中解析SIP URI中的电话号码

2024-05-14 09:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

urlparse是用于此目的的正确模块,还是有其他模块?在

>>> o = urlparse.urlparse('"User Name" <sips:+msisdn@domain?Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit>', scheme='sips')
>>> print o
ParseResult(scheme='sips', netloc='', path='"User Name" <sips:+msisdn@domain', params='', query='Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit>', fragment='')
>>> 

我期望+msisdn@domain位于netlocpath,但是{}中的值有点奇怪。在


Tags: 模块instancenameuuiddomaincontactrequireurlparse
2条回答

您可以看看在其他lib中是如何实现的,例如在twisted中: https://github.com/twisted/twisted/blob/trunk/twisted/protocols/sip.py#L427

解析的不是SIPS URI,而是地址记录(Address Of Record,AOR)。如果从AOR提取URI,您将得到:

>>> o = urlparse.urlparse('sips:+msisdn@domain?Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit')
>>> print o
ParseResult(scheme='sips', netloc='', path='+msisdn@domain', params='', query='Accept-Contact=+sip.instance="<urn:uuid:2e7671fd-31dd-1393-dkd6-835fe09f314f>";require;explicit', fragment='')

根据RFC 3986,SIPS URI的userinfo@host部分应该进入path组件,因此这里的结果是正确的。在

相关问题 更多 >

    热门问题