PJSIP Android TLS - 无法为注册生成合适的Contact标头:不支持的传输(PJSIP_EUNSUPTRANSPORT)

时间:2017-07-29 08:56:25

标签: android pjsip

我正在尝试使用pjsip TLS在android中进行调用。根据pjsip指南,我使用openssl命令构建了pjsip库。

我在config_site.h中包含了以下内容

  

定义PJSIP_HAS_TLS_TRANSPORT 1

     

定义PJ_HAS_SSL_SOCK 1

我在构建包含OpenSSL的库时可以看到。

  

找到OpenSSL库,启用SSL支持

我使用以下命令

成功创建了TLS传输
ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TLS,
                    sipTpTLSConfig); 

我可以看到TLS Listener在我的本地IP地址上启动。 但是,当我尝试注册时,它给了我错误

  

无法为注册生成合适的Contact标头:   不支持的传输(PJSIP_EUNSUPTRANSPORT)

Java代码

String sipid = sipURI + username + "@" + switch_ip + ":" + switch_port;
String registrar = sipURI + switch_ip + ":" + switch_port+addTransportTLS;
String proxy = sipURI + switch_ip + ":" + switch_port;
AccountConfig accCfg = new AccountConfig();
accCfg.setIdUri(sipid);
accCfg.getRegConfig().setRegistrarUri(registrar);
accCfg.getRegConfig().setRetryIntervalSec(60);
accCfg.getNatConfig().setIceEnabled(false);
app.addAcc(accCfg);

我根据pjsip文档做了以下操作 将; transport = tls 添加到我的注册商地址。 但我仍然得到这个错误? 有人可以提供帮助

2 个答案:

答案 0 :(得分:2)

sip帐户的注册应按下面的代码显示。此外,您必须通过设置TransportConfig

sipTpTLSConfig.setPort(your_sip_port);中设置端口
AccountConfig accCfg = new AccountConfig();
accCfg.getSipConfig().getProxies().add("sip:" + your_sip_server_host + ";hide;transport=tls");
accCfg.setIdUri("sip:" + your_sip_username + "@" + your_sip_domain);
accCfg.getRegConfig().setRegistrarUri("sip:" + your_sip_domain);

AuthCredInfoVector creds = accCfg.getSipConfig().getAuthCreds();
creds.add(new AuthCredInfo("Digest", "*", your_sip_username, 0, your_sip_password));

app.addAcc(accCfg);

您可以保留用于设置注册间隔的代码并禁用冰。

答案 1 :(得分:0)

在我们今天开发的iOS应用中,我遇到了同样的问题。我发现我是因为我们使用TCP作为传输,但是UDP是与我的Asterisk一起使用的正确网络传输。

所以,我只是使用UDP而不是TCP,一切正常。

祝你好运!