我正在尝试使用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 添加到我的注册商地址。 但我仍然得到这个错误? 有人可以提供帮助
答案 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,一切正常。
祝你好运!