【问题标题】:Connect Android SIP to OfficeSip server将 Android SIP 连接到 OfficeSip 服务器
【发布时间】:2018-05-24 22:15:12
【问题描述】:

我正在开发一个 Android SIP 客户端。我想针对 OfficeSip 服务器对其进行测试。所以我已经在本地设置了officeSip服务器,我可以通过officeSIP messenger(客户端)连接到它。

信使需要此数据才能登录:

  • 列表项
  • 地址:用户名@server_domain
  • 用户名:用户名
  • 密码:密码
  • 协议:协议
  • 服务器地址:服务器地址

但是,当尝试在 Android 中执行相同操作时,其 SipProfile.Builder 的参数略有不同。值得注意的是:

public SipProfile.Builder (String username, String serverDomain)
public SipProfile.Builder setOutboundProxy (String outboundProxy)

似乎没有可用的服务器地址。

我已经为 serverDomain 参数尝试了以下方法:

  • user@server_domain/server_ip
  • server_domain/server_ip
  • server_domain@server_ip
  • 许多其他组合

但是,我收到 连接错误(使用 @ 时)或 注册失败 事件(当 / 与 / 后的服务器 IP 一起使用时)。错误码首先是-4(当设备发生错误,可能是由于bug),紧接着是-9(客户端在一个事务中,不能发起一个新的)

如何使用 Android SIP 客户端连接到 OfficeSIP?

编辑: 我设法与使用自定义 SIP 堆栈的CSipSimpleClient 建立通信。它只需要服务器名称(等于服务器的域)、用户名和密码。

【问题讨论】:

  • 您好,我目前遇到了同样的问题,请您帮我解决一下,我已经阅读了下面的答案,我觉得我的问题很清楚,我已经在这里发表了评论。

标签: android sip


【解决方案1】:

我不确定.. 但是 '@' 和 '/' 是不允许的,SipProfile.Builder 会生成一个 URI,例如"username@serverDomain(or ip)",带有用户名和 serverDomain 参数。 尝试这样设置.. ("user1", "test.com"), ("user1", "1.1.1.1")。

API描述说“SIP服务器域;如果网络地址与域不同,使用setOutboundProxy(String)设置服务器地址”关于serverDomain。

【讨论】:

    【解决方案2】:

    事实证明,Android SIP 堆栈还很不成熟而且很笨拙。

    最终我能够通过指定服务器主机名和服务器代理来连接。 此外,如果服务器域与运行服务器的计算机名称不同,您将遇到连接问题。域必须匹配 IP 地址或计算机名称,但它们必须匹配才能通过 Android SIP 客户端连接。

    【讨论】:

    • velis> 我正在尝试使用 CSipSimple Android SIP 客户端连接到 OfficeSIP 服务器,使用用户、密码和服务器(IP 地址) - 基本向导。它只是无法使用消息“请求超时”来注册用户
    • 你还在运行服务器吗?如果是这样,您需要指定正确的 IP 地址。
    • 是的,我正在运行服务器,我可以从 OfficeSIP Messenger 应用程序成功连接,与服务器在同一台机器上运行(尚未尝试远程,因为我现在没有备用机器)。我还从 Android 设备命令行检查了 IP 地址和端口确实可以从 android 设备访问。我想知道还有什么要研究的。
    • OfficeSIP 服务器域是否与您尝试访问时的名称匹配?如果你使用IP,域名必须是IP,如果你使用机器名,域名必须匹配。
    • 如果不匹配,您必须将服务器地址写为 domain@ip - 如果我没记错的话。
    【解决方案3】:

    我已使用 android SIP API 成功连接到 OfficeSIP。

    1. 下载SipDemohere
    2. 在 WalkieTalkieActivity.java 中,我将代码修改为如下:

      SipProfile.Builder builder = new SipProfile.Builder("test", "officesip.local");

      builder.setPassword("test");

      builder.setOutboundProxy("192.168.10.191");

      builder.setAutoRegistration(true);

      我 = builder.build();

    3. 在 OfficeSIP 中测试是用户有密码也测试。出站代理是托管 OfficeSIP 的计算机或服务器的 IP,officesip.local 是 SIP 域名,可以在 OfficeSIP 的设置选项卡下找到。

    4. 为了测试这一点,我在 OfficeSIP 上创建了第二个帐户,并使用 Sipdroid 登录到该帐户。从那里我打电话给在第二部手机上运行的 SipDemo 应用程序,它工作了。

    【讨论】:

    • 我遇到了这个问题。 SIP Messenger 显示一个帐户处于“已连接”状态,但另一个帐户处于“正在连接”状态。最后一个链接到 WalkieTalkie 演示应用,移动客户端的状态为“Ready”。你在这方面有过类似的经历吗?你对背后的原因有任何线索吗?
    猜你喜欢
    • 2013-12-03
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2013-01-11
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多