2012-03-13 60 views
2

我们想要在Android 2.3.3上创建SIP应用程序,并且在android.sip堆栈(默认SIP堆栈)中存在一些问题。我们的移动应用发送寄存器sip数据包,但是 1.)默认情况下OpenIMS核心响应400错误请求P-Visited-Network-ID头丢失 2.)在我们设置端口号为4060的情况下-PCSCF /builder.setPort (4060)/ OpenIMS核心将此请求从4060发送到4060(相同的端口,相同的IP,相同的CSCF,相同的数据包),直到OpenIMS核心发送响应移动应用 - 504服务器超时为止。 我们也尝试了SipDemo,CSipSimple,我们也遇到了同样的问题。 当我们尝试怪兽通讯器或IMSDroid时,它的工作原理!具有授权的SIP堆栈注册包

工作和有问题的应用程序之间有一个区别 - 工作应用程序也发送注册包与授权字段。

部分代码:

public SipManager mSipManager = null; 
public SipProfile mSipProfile = null; 
SipProfile.Builder builder = new SipProfile.Builder(username, domain); 
builder.setPassword(password); 
builder.setDisplayName(username); 
builder.setProfileName(username + "@" + domain); 
port = Integer.parseInt(4060); 
builder.setProtocol(protocol); 
mSipProfile = builder.build(); 
... 
try { mSipManager.open(mSipProfile);} catch (SipException e) { ...} 
try { 
     mSipManager.register(mSipProfile, 30, new SipRegistrationListener(){ 
     public void onRegistering(String localProfileUri) { 
     } 
     public void onRegistrationDone(String localProfileUri, long expiryTime) { 
     } 
     public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) { 
     } 
     }); 
    } catch (SipException e) { 

.... }

如何给授权场登记在经典的SIP协议栈包?

我们还试图J-SIP但它显示错误:转换为Dalvik的格式错误1.

每一个答案,将是非常赞赏失败。

回答

0

您的问题与缺少授权标题无关。

登记在下列的事项进行:

  1. 客户端发送的注册请求没有“授权”头。

  2. 服务器响应401响应代码,其中包括一个名为“WWW-Authnticate”的头,该头将参数保存为realm,opaque,qop和hashing算法类型。

  3. 将这些参数与用户名和密码一起使用授权标头由SIP堆栈自动生成。并发送包含“授权”头的第二个注册请求。

  4. 如果请求是以正确的方式发送服务器返回200 OK响应代码,这意味着你现在注册了。

你的问题是别的东西,你甚至不要求您收到400错误的请求响应代码到第3步(授权步骤),你不能在步骤1中,为初始注册 - 这几乎总是意味着您的请求中有语法错误。