2017-08-11 61 views
0

我能够使用pjsip成功注册到我的sip服务器。
但是,使用tls传输从pjsip发送注册时,碰巧会有额外的字符串附加到联系人标题。如何在使用TLS时在pjsip中的contactheader中的contacturi后删除sip-id

Contact: <sip:[email protected]:57336;transport=TLS;ob>;reg-id=1;+sip.instance="<urn:uuid:00000000-0000-0000-0000-0000e922f243>" 

有人可以告诉如何从联系人头部中删除它?

这是我的代码。所有的

String sipURI = "sip:"; 
    String addTransport = ""; 
    if(enableTLS) 
     addTransport = ";hide;transport=tls"; 
    String sipid = sipURI + username + "@" + switch_ip + ":" + switch_port; 
    String registrar = sipURI + switch_ip + ":" + switch_port; 
    String proxy = sipURI + switch_ip + ":" + switch_port+addTransport; 

    AccountConfig accCfg = new AccountConfig(); 
    accCfg.setIdUri(sipid); 

    AuthCredInfoVector creds = accCfg.getSipConfig().getAuthCreds(); 
    creds.clear(); 
    if (username.length() != 0) { 
     creds.add(new AuthCredInfo("Digest", "*", username, 0, password)); 
    } 
    StringVector proxies = accCfg.getSipConfig().getProxies(); 
    proxies.clear(); 

    if (proxy.length() != 0) { 
     proxies.add(proxy); 
    } 
    accCfg.getRegConfig().setRegistrarUri(registrar); 
    accCfg.getRegConfig().setRetryIntervalSec(60); 
    accCfg.getRegConfig().setTimeoutSec(60); 
    accCfg.getNatConfig().setIceEnabled(false); 
accCfg.getCallConfig().setTimerUse(pjsua_sip_timer_use.PJSUA_SIP_TIMER_INACTIVE);   accCfg.getCallConfig().setPrackUse(pjsua_100rel_use.PJSUA_100REL_NOT_USED);  
    app.addAcc(accCfg); 
+0

你可以请你的帐户注册码吗? – 2017-08-11 10:33:02

+0

@McLaLa添加代码 – Jeeva

+0

标签android或pjsua2下次您创建问题:) – 2017-08-11 11:41:16

回答

0

首先,你必须设置在TransportConfig端口与setPort(switch_port)。不需要用端口设置uri的id或者创建带端口的注册器字符串或者用端口写代理。这就够了,看下面的代码。

TransportConfig sipTpConfig = new TransportConfig(); 
sipTpConfig.setPort(switch_port); 
... 

String sipid = sipURI + username + "@" + switch_ip; 
String registrar = sipURI + switch_ip; 
String proxy = sipURI + switch_ip + addTransport; 
... 

accCfg.getRegConfig().setRegistrarUri("sip:" + SIP_DOMAIN); 
accCfg.getSipConfig().getProxies().add("sip:" + SIP_SERVER_HOST + ";hide"); 

再次,设置您的端口,当您设置传输配置。另一件事是如果你在服务器端配置了SRV记录,让pjsip自动检测可用端口。我的意思是,不要在寄存器信号中硬编码端口,也不要手动设置端口。请使用此代码来显示正确的联系人标题。

accCfg.getNatConfig().setContactRewriteUse(0); 
accCfg.getNatConfig().setContactRewriteMethod(0); 
accCfg.getNatConfig().setContactUseSrcPort(0); 
accCfg.getNatConfig().setViaRewriteUse(0); 

SIP_DOMAIN是您的域,switch_ip,一切 “@” 之前和SIP_SERVER_HOST是您外出代理。

+0

srv recordis未启用在我的服务器 – Jeeva

+0

是的,我总是这样做.transport配置是在另一个块,所以我没有提到它对不起。 – Jeeva

+0

我的sip代理只侦听一个特定的端口,其他端口被阻塞,但是会试一试。 – Jeeva

相关问题