IncompatibleClassChangeError:'org.apache.http.conn.ssl.SSLSocketFactory' doesn't implement interface 'org.apache.http.conn.scheme.SchemeSocketFactory'

IncompatibleClassChangeError:'org.apache.http.conn.ssl.SSLSocketFactory' doesn't implement interface 'org.apache.http.conn.scheme.SchemeSocketFactory'

我在 build.gradle 中添加此库时出现此错误:implementation group: "com.twilio.sdk", name: "twilio", version: "7.54.0"

这是全部build.gradle:

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0'
    implementation files('libs/jtds-1.2.7.jar')
    implementation group: "com.twilio.sdk", name: "twilio", version: "7.54.0"
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.airbnb.android:lottie:3.4.0'
    implementation 'com.google.firebase:firebase-database:19.3.1'
    implementation 'com.google.firebase:firebase-storage:19.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

}

我想做的是使用 twilio 发送短信'paid version'有什么想法吗?

Logcat:

2020-07-17 19:45:55.510 334-16754/? E/ResolverController: No valid NAT64 prefix (101, <unspecified>/0)
2020-07-17 19:45:55.511 16608-16695/com.example.tookysupervisors E/ookysupervisor: Maybe bug 77342775, looking for Lorg/apache/http/conn/scheme/SchemeSocketFactory; 0x13746d98[continuous;main space (region space)] defined in /data/app/~~8Z3JZDUZHOXIT8NbFYzuyQ==/com.example.tookysupervisors-t_8F8_XNcsZJnKjDvr1bqA==/base.apk!classes3.dex/0xf446b0b0
2020-07-17 19:45:55.511 16608-16695/com.example.tookysupervisors E/ookysupervisor:   with loader: dalvik.system.PathClassLoader/0xf4722750[hit:continuous;main space (region space)](/data/app/~~8Z3JZDUZHOXIT8NbFYzuyQ==/com.example.tookysupervisors-t_8F8_XNcsZJnKjDvr1bqA==/base.apk/0xf4469a60:+!classes2.dex/0xf446b580:+!classes3.dex/0xf446b0b0);java.lang.BootClassLoader/0xf470ac40
2020-07-17 19:45:55.511 16608-16695/com.example.tookysupervisors E/ookysupervisor:   in interface table for Lorg/apache/http/conn/ssl/SSLSocketFactory; 0x71003580[image;/system/framework/x86/boot-framework.art;+;0x70fcf000] defined in /system/framework/framework.jar!classes3.dex/0xf44410b0 ifcount=2
2020-07-17 19:45:55.511 16608-16695/com.example.tookysupervisors E/ookysupervisor:   with loader BootClassLoader
2020-07-17 19:45:55.511 16608-16695/com.example.tookysupervisors E/ookysupervisor:   iface #0: org.apache.http.conn.scheme.SocketFactory
2020-07-17 19:45:55.511 16608-16695/com.example.tookysupervisors E/ookysupervisor:   iface #1: org.apache.http.conn.scheme.LayeredSocketFactory
2020-07-17 19:45:55.514 16608-16695/com.example.tookysupervisors E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
    Process: com.example.tookysupervisors, PID: 16608
    java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask.done(AsyncTask.java:415)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
        at java.util.concurrent.FutureTask.run(FutureTask.java:271)
        at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:305)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:923)
     Caused by: java.lang.IncompatibleClassChangeError: Class 'org.apache.http.conn.ssl.SSLSocketFactory' does not implement interface 'org.apache.http.conn.scheme.SchemeSocketFactory' in call to 'java.net.Socket org.apache.http.conn.scheme.SchemeSocketFactory.createSocket(org.apache.http.params.HttpParams)' (declaration of 'org.apache.http.impl.conn.DefaultClientConnectionOperator' appears in /data/app/~~8Z3JZDUZHOXIT8NbFYzuyQ==/com.example.tookysupervisors-t_8F8_XNcsZJnKjDvr1bqA==/base.apk!classes3.dex)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:168)
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
        at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
        at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
        at com.example.tookysupervisors.MainActivity$AsyncTaskRunner.doInBackground(MainActivity.java:390)
        at com.example.tookysupervisors.MainActivity$AsyncTaskRunner.doInBackground(MainActivity.java:347)
        at android.os.AsyncTask.call(AsyncTask.java:394)

它发生在异步任务中这一行:

 private class AsyncTaskRunner extends AsyncTask<String, String, String> {
        private String resp;

        @Override
        protected String doInBackground(String... params) {
            try{
                String twilioSID="AC2be050f87d26aa4b44186c50f6e610e2";
                String twilioSecret="cc814999667be1f7c7d0286b808261cd";
                String urlStr = "https://"+twilioSID+":"+twilioSecret+"@api.twilio.com/2010-04-01/Accounts/"+twilioSID+"/SMS/Messages";

                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(urlStr);
                String base64EncodedCredentials = "Basic "
                        + Base64.encodeToString(
                        ("AC2be050f87d26aa4b44186c50f6e610e2" + ":" + "cc814999667be1f7c7d0286b808261cd").getBytes(),
                        Base64.NO_WRAP);
    
                httppost.setHeader("Authorization", base64EncodedCredentials);
    
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("From", "+13344713628"));
                nameValuePairs.add(new BasicNameValuePair("To", "+201064144493"));
                nameValuePairs.add(new BasicNameValuePair("Body", "Welcome to Twilio"));

                try {
                    httppost.setEntity(new UrlEncodedFormEntity(
                            nameValuePairs));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

                // Execute HTTP Post Request
                HttpResponse response = null;
                try {
                    response = httpclient.execute(httppost); // in this line crash occurs
                } catch (IOException e) {
                    e.printStackTrace();
                }
                int status = response.getStatusLine().getStatusCode();
                System.out.println("sammy_response_code "+status);
                HttpEntity entity = response.getEntity();
                if (entity != null){
                    resp = EntityUtils.toString(entity);
                }

            }catch (Exception e){
                System.out.println("sammy_Exception "+e);
            }

            return resp;
        }

        @Override
        protected void onPostExecute(String result) {
            //pd.dismiss();
            System.out.println("sammy_response "+result);
        }
    }

我通过将其添加到我的清单文件中解决了这个问题, 在您的应用程序块中添加:

    android:usesCleartextTraffic="true"

<uses-library android:name="org.apache.http.legacy" android:required="false"/>