这两天更换sip服务器,发现原来的程序登陆不上,后来通过抓包发现是少了cnonce和nc字段所导致, 那就加上吧,不过这里要注意的是这两个字段是要被用于生成摘要响应的。修改后的代码见附件。
说明 :
qop :客户端选择的保护方式。 "auth"表示只进行身份查验, "auth-int"表示进行查验外,还有一些完整性保护。需要看更详细的描述,请参阅RFC2617
nc :"现时"计数器,这是一个16进制的数值,即客户端发送出请求的数量(包括当前这个请求),这些请求都使用了当前请求中这个"现时"值。例如,对一个给定的"现时"值,在响应的第一个请求中,客户端将发送"nc=00000001"。这个指示值的目的,是让服务器保持这个计数器的一个副本,以便检测重复的请求。如果这个相同的值看到了两次,则这个请求是重复的。
cnonce :这也是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护。
参考 :http://code.google.com/p/sipdroid/issues/detail?id=33