【发布时间】:2012-03-12 03:02:02
【问题描述】:
我正在开发一个 SIP 应用程序。当我通过我的 android 应用程序在 SIP 服务器上注册时,android 在星号服务器上显示的默认用户代理是 SIPAUA/0.1.001。我该如何改变呢?我在互联网上搜索了找不到任何东西? android中有什么方法可以改变它吗?我使用的资源是
- 星号 1.8.7.1
- 安卓2.3.3
【问题讨论】:
我正在开发一个 SIP 应用程序。当我通过我的 android 应用程序在 SIP 服务器上注册时,android 在星号服务器上显示的默认用户代理是 SIPAUA/0.1.001。我该如何改变呢?我在互联网上搜索了找不到任何东西? android中有什么方法可以改变它吗?我使用的资源是
【问题讨论】:
您可以使用 REGISTER 方法中的 User-Agent 标头字段指定该值。
请参阅 SIP RFC 的第 20.41 节。
REGISTER 方法的示例主体,其中包含 User-Agent 头字段:
Session Initiation Protocol
Request-Line: REGISTER sip:192.168.16.40 SIP/2.0
Method: REGISTER
[Resent Packet: False]
Message Header
Via: SIP/2.0/UDP 192.168.16.181:32262;branch=z9hG4bK-d87543-624dc77d9c1b9618-1--d87543-;rport
Max-Forwards: 70
Contact: <sip:11@192.168.16.181:32262;rinstance=9dd2c78e6ac0a5a5>
To: "soft 2"<sip:11@192.168.16.40>
From: "soft 2"<sip:11@192.168.16.40>;tag=394aa21c
Call-ID: YjYzYTAyNzM0NGVkYmEzZWMyMzJmNzMzNDZjMzIyMjg.
CSeq: 1 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
User-Agent: X-Lite release 1011s stamp 41150
Content-Length: 0
编辑:
此代码应该在您的应用程序中,而不是在服务器上。
您应该实施或使用现成的 SIP堆栈。
流行的免费 SIP 堆栈库是 - MjSip 和 Doubango - 许多开源软件 SIP 客户端(电话)使用它们。
基本上,在 SIP 堆栈中,每个标头字段都有一个类(根据 RFC)——几乎就像一个 POJO/Simple Java Bean。比你有一个消息工厂,它支持创建所有 SIP2.0(有时 + SIMPLE 的扩展消息 - 那是聊天和在线服务)消息 - 注册、邀请、确认等。 比你有一个解析器,它提供了从消息体中提取信息的便捷方法(支持所有消息类型)。 SIPStack 大致就是这样。
因此,当您创建消息时,您会在该消息上附加标题字段的集合(以及 SDP 的属性集合,如果需要)(以编程方式,它实际上取决于 SIPStack 实现),您只需添加收集必要的标头字段。
【讨论】:
您还指定了您使用的 sip 库并查阅该库的文档。 很可能您只是没有在库中设置该字段,因此它使用默认值。
【讨论】: