Java 尝试从httpurlconnection获取响应代码时工作程序出错
我试图从工作线程内的链接获取输入流,但是它会给我ssl错误。链接不是问题所在,我已在清单中允许使用internet权限。下面是我的代码片段Java 尝试从httpurlconnection获取响应代码时工作程序出错,java,android,android-workmanager,Java,Android,Android Workmanager,我试图从工作线程内的链接获取输入流,但是它会给我ssl错误。链接不是问题所在,我已在清单中允许使用internet权限。下面是我的代码片段 WorkManager workManager = WorkManager.getInstance(context); ArrayList<OneTimeWorkRequest> oneTimeWorkRequests = new ArrayList<>(); for(int i = 0; i <
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);
请注意,我使用的是一个工作请求列表,我相信它会一个接一个地启动。注意:进一步测试后,这只会在android emulator上发生
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();
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 } ]