Python中文
首页
教程
问答
标签
搜索
登录
注册
Okhttp java.net.ProtocolException:意外的流结束
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我目前正在开发Android应用程序,我正在使用okttp3发出一个简单的GET请求。我使用我的flask应用程序作为API端点。 <strong>编码Android</strong>:</p> <pre><code> OkHttpClient client = new OkHttpClient(); final Request request = new Request.Builder() .url(url) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { String s = response.body().string(); System.out.println(s); } @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { System.out.println(e.getMessage()); } }); </code></pre> <p><strong>代码瓶</strong></p> <pre><code>@app.route('/abc', methods=["GET"]) def abc(): return jsonify({"test": "abc"}) </code></pre> <p>当我使用邮递员提出请求时,我没有任何问题: <a href="https://i.stack.imgur.com/joNXe.png" rel="nofollow noreferrer">postman get request</a> 然而,当使用上面的java代码时,有时它可以工作,但有时我会遇到以下错误</p> <pre><code>D/OkHttp: java.net.ProtocolException: unexpected end of stream at okhttp3.internal.http1.Http1ExchangeCodec$FixedLengthSource.read(Http1ExchangeCodec.kt:389) at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:276) at okio.Buffer.writeAll(Buffer.kt:1655) at okio.RealBufferedSource.readString(RealBufferedSource.kt:95) at okhttp3.ResponseBody.string(ResponseBody.kt:187) at com.example.teste.MainActivity$2.onResponse(MainActivity.java:83) at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) D/OkHttp: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) </code></pre> <p>我曾尝试过在其他帖子中提出的多种解决方案,如:</p> <pre><code>OkHttpClient client = new OkHttpClient.Builder() .retryOnConnectionFailure(true) .build(); </code></pre> <p>或</p> <pre><code>Request request = new Request.Builder() .addHeader("Authorization", "Bearer " + apiToken) .addHeader("content-type", "application/json") .addHeader("Connection","close") .url(uri) .build(); </code></pre> <p>但它们都不起作用。这里有什么问题?我尝试过用其他虚拟api的相同代码发出请求,但它总是有效的。我丢失了什么</p> <p>错误发生在这里:</p> <pre><code>val read = super.read(sink, minOf(bytesRemaining, byteCount)) if (read == -1L) { connection.noNewExchanges() // The server didn't supply the promised content length. val e = ProtocolException("unexpected end of stream") responseBodyComplete() throw e } </code></pre> <p>它与服务器提供的内容长度有关。我如何解决这个问题</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>只有在我使用仿真器时才会发生异常。在设备上没有问题</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
1 回答
如何在乒乓球游戏中阻止球
4 回答
如何在乘法和模中不乘空间?
1 回答
如何在乘法和除以2个不同的数字之间进行交换?
4 回答
如何在也是数据一部分的单个字符上拆分大字符串
2 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
8 回答
如何在事件wxWidgets中传递自定义数据
4 回答
如何在事件中使用lambda i=i?
10 回答
如何在事件中心只接收最近的数据
9 回答
如何在事件发生之前保持云函数运行?
10 回答
如何在事件发生后使页面重定向到同一页面
3 回答
如何在事件回调之间保持python生成器的状态
7 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
3 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
7 回答
如何在事件处理程序中访问外部对象?
10 回答
如何在事件循环中将协程打包为正常函数?
5 回答
如何在事件循环之外运行协同程序?
9 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
1 回答
如何在事件文件中只保留一份摘要?
8 回答
如何在事件模板中添加事件
1 回答