gpt4 book ai didi

android - 解析 CSV 行后出现 SSLProtocolException

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:27 26 4
gpt4 key购买 nike

我正在通过一个简单的 HTTP/GET 请求通过 SSL 连接将一组 CSV 行下载到我的 android 设备。在我们切换到新服务器(Debian 6 -> Debian 7)之前,这就像一个魅力,这可能是服务器证书的问题,但我不这么认为,因为下载开始并在此异常之前解析了大约 700 篇文章在 .readLine() 上抛出:

(请注意,该下载已在 Android ICS (4.*) 上进行了测试并且没有任何问题,它似乎只影响 Android <= 2.3。)

Read error: ssl=0x35e700: Failure in SSL library, usually a protocol error
javax.net.ssl.SSLProtocolException: Read error: ssl=0x35e700: Failure in SSL library, usually a protocol error
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:788)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:134)
at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:161)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159)
at java.io.InputStreamReader.read(InputStreamReader.java:255)
at java.io.BufferedReader.fillBuf(BufferedReader.java:128)
at java.io.BufferedReader.readLine(BufferedReader.java:357)
at xx.xxxxx.services.ArticlesSync.doInBackground(ArticlesSync.java:155)
at xx.xxxxx.services.ArticlesSync.doInBackground(ArticlesSync.java:26)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)

|

InputStream inputStream = response.getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

String currentLine = null;
SQLArticleManager articles = SQLArticleManager.createArticles();
while ((currentLine = bufferedReader.readLine()) != null)
{
if (!progressDialog.isShowing())
{
return ERROR_ABORTED;
}

String[] data = currentLine.split("`");

if (data.length == 4)
{
articles.addArticle(data[0], data[1], data[2], Float.parseFloat(data[3]));
}

rowsRead++;
publishProgress(createProgress((int) (rowsRead * 100 / rows), ""));
}

我是不是做错了什么?会不会是某处超时?

最佳答案

很抱歉带来坏消息,但这是一个影响版本 2.2-2.3.3(API 级别 9 和 10)的已知 Android 错误。 See this bug还有this bug了解更多详情。

有一个 further discussion记录这可能是关于根 CA 的问题,但那里的第二个链接与此数据冲突,所以我不认为是这种情况。

我认为可行的方法(虽然我还没有模拟一个快速示例来验证)是显式使用 4k 缓冲区与 getInputStream() 结合使用,即

private static final int BUFFER_SIZE = 4096;

希望对您有所帮助。

关于android - 解析 CSV 行后出现 SSLProtocolException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com