java - 在 java android studio 中实现 twilio 可编程语音调用时遇到一些错误

标签 java android twilio twilio-api

我在 java android studio 中实现了 Twilio 可编程语音调用,正如他们在文档中给出的描述,但在运行时遇到了一些错误

以下是我面临的错误:

 Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
        at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.getDefaultRegistry(PoolingHttpClientConnectionManager.java:109)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:116)
        at com.twilio.http.NetworkHttpClient.<init>(NetworkHttpClient.java:58)
        at com.twilio.http.TwilioRestClient$Builder.build(TwilioRestClient.java:102)
        at com.twilio.Twilio.getRestClient(Twilio.java:122)
        at com.twilio.base.Creator.create(Creator.java:45)
        at com.systema.twilliovoicecalltest.MakePhoneCall.main(MakePhoneCall.java:33)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

我试图排除像这样的 http 库

implementation (group: "com.twilio.sdk", name: "twilio", version: "7.34.1")
{

 exclude group: 'org.apache.httpcomponents' ,module:'httpclient'

exclude group: 'org.apache.httpcomponents' ,module:'httpcore'
    }

implementation (group: "com.sparkjava", name: "spark-core", version: "2.7.1")
{

 exclude group: 'org.apache.httpcomponents' ,module:'httpclient'

 exclude group: 'org.apache.httpcomponents' ,module:'httpcore'
    }

implementation (group: "org.slf4j", name: "slf4j-simple", version: "1.7.21")
{

 exclude group: 'org.apache.httpcomponents' ,module:'httpclient'

 exclude group: 'org.apache.httpcomponents' ,module:'httpcore'
    }

当我尝试上述解决方案时,错误发生了变化:

>Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ProtocolVersion
    at com.twilio.http.TwilioRestClient$Builder.build(TwilioRestClient.java:102)
    at com.twilio.Twilio.getRestClient(Twilio.java:122)
    at com.twilio.base.Creator.create(Creator.java:45)
    at com.systema.twilliovoicecalltest.MakePhoneCall.main(MakePhoneCall.java:33)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
Caused by: java.lang.ClassNotFoundException: org.apache.http.ProtocolVersion
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 9 more

这是我的java代码:

public static void main(String[] args) throws URISyntaxException {

    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

    String from = "+18572632XXX";
    String to = "+92**********";

    Call call = Call.creator(new PhoneNumber(to), new PhoneNumber(from),
            new URI("http://demo.twilio.com/docs/voice.xml")).create();


    System.out.println(call.getSid());
}

我已经包含了所有必要的库:

>implementation group: "com.twilio.sdk", name: "twilio", version: "7.34.1"</br>

>implementation group: "com.sparkjava", name: "spark-core", version: "2.7.1"</br>

>implementation group: "org.slf4j", name: "slf4j-simple", version: "1.7.21"</br>

我没有这方面的经验,请帮忙

最佳答案

这里是 Twilio 开发人员布道者。正如您所注意到的,Android 在使用我们的 Java SDK 时会遇到麻烦,因为它的依赖项之一是用于 HTTP 的 Apache 库。你想做的是使用我们的 Android SDK用于调用电话。

您可以查看如何使用它的示例 here ,以及通过 quickstart这将带您完成整个过程。

在您的示例中,您使用的 Java SDK 在您的应用程序中存在安全问题,因为它现在将您的帐户凭据硬编码到您的最终 APK 中。我在 blog post 中解释了为什么这不是一个好主意.

希望对你有帮助。

关于java - 在 java android studio 中实现 twilio 可编程语音调用时遇到一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54512235/

相关文章:

java - JAVA 组织对象数组列表

java - recyclerView 点击处理中的这是什么?

ruby-on-rails - Twilio:接收短信并处理正文内容

java - 在 XPage 中的新 Java 自定义控件中插入现有控件

java - 为什么下面的程序会出现PatternSyntaxException?

android - 使用NDK构建项目失败

java - 有效证书上的 SSL 连接错误

ios - 如何在我的应用程序中设置 twilio

java - 如何修复 "Direct notifications and query notifications cannot be requested together"

java - 如何在java中禁用某些用户菜单中的功能?