IncompatibleClassChangeError:'org.apache.http.conn.ssl.SSLSocketFactory' 不实现接口 'org.apache.http.c



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

这是整个建筑。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"付费版"发送短信,有什么想法吗?

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$4.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$1.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$3.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"/>

最新更新