如何解决尝试从httpurlconnection获取响应代码时,worker中出现错误
我正在尝试从工作线程内部的链接获取输入流,但是它给我ssl错误。链接不是问题,我已在清单中允许使用互联网许可。这是我的代码段。
WorkManager workManager = WorkManager.getInstance(context);
ArrayList<OneTimeWorkRequest> oneTimeWorkRequests = new ArrayList<>();
for(int i = 0; i < mPodcastSources.size(); i++) {
Data.Builder dataBuilder = new Data.Builder().putString(WORKER_PODCAST_WORKER_KEY,mPodcastSources.get(i));
OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(PodcastUpdateWorker.class)
.setBackoffCriteria(BackoffPolicy.LINEAR,10,TimeUnit.SECONDS)
.setInputData(dataBuilder.build())
.addTag(ONE_TIME_WORK_REQUEST_KEY)
.build();
oneTimeWorkRequests.add(oneTimeWorkRequest);
}
workManager.enqueue(oneTimeWorkRequests);
错误在
String podcastFeed = getInputData().getString(WORKER_PODCAST_WORKER_KEY);
ArrayList<Podcast> mPodcasts = new ArrayList<>();
Log.d("rial-links",podcastFeed);
try {
URL url = new URL(podcastFeed);
URLConnection urlConnection = url.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { //here
InputStream in = httpURLConnection.getInputStream();
这是logcat读数
10-17 13:58:36.262 4581-4605/com.example.corbettreportpodcasts W/System.err: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8adeb40: Failure in SSL library,usually a protocol error
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x8d93b990:0x00000000)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.Connection.connect(Connection.java:107)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.example.simplepodasts.PodcastUpdateWorker.doWork(PodcastUpdateWorker.java:86)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at androidx.work.Worker$1.run(Worker.java:85)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at java.lang.Thread.run(Thread.java:841)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8adeb40: Failure in SSL library,usually a protocol error
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x8d93b990:0x00000000)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405)
10-17 13:58:36.272 4581-4605/com.example.corbettreportpodcasts W/System.err: ... 14 more
10-17 13:58:36.282 4581-4601/com.example.corbettreportpodcasts I/WM-WorkerWrapper: Worker result RETRY for Work [ id=014602b6-ba91-4e00-abb2-978859679834,tags={ ONE_TIME_WORK_REQUEST_PODCAST,com.example.simplepodasts.PodcastUpdateWorker } ]
请注意,我使用的是一份工作要求清单,我相信这些要求会彼此追根溯源。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。