我正在开发一个SIP应用程序。当我通过我的Android应用程序在SIP服务器上注册时,android在星号服务器上显示的默认用户代理是 SIPAUA / 0.1.001 。我该如何改变?我在互联网上搜索过什么都找不到? android中是否有任何方法可以更改它?我使用的资源是
答案 0 :(得分:0)
您可以使用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 Stack库是 - MjSip和Doubango - 许多开源软件SIP客户端(电话)都使用它们。
基本上在SIP堆栈中,每个头字段都有一个类(根据RFC) - 几乎就像一个POJO /简单Java Bean。比你有一个消息工厂,它支持所有SIP2.0的创建(有时为SIMPLE的+扩展消息 - 即聊天和在线服务)消息 - REGISTER,INVITE,ACK等。 比你有一个Parser,它提供了从消息体中提取信息的便捷方法(支持所有消息类型)。这大致是SIPStack所持有的。
因此,当您创建一条消息时,您已经附加到该消息的头字段集合(以及SDP的属性集合,如果需要)(以编程方式,它实际上取决于SIPStack实现)并且您只需添加收集必要的标题字段。
答案 1 :(得分:0)
您还要指定使用哪个sip库并查阅lib的文档。 大多数probalby你只是没有在库中设置该字段,因此它使用默认值。