吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1023|回复: 14
收起左侧

[求助] 这是okhttp的bug吗?(已解决)

[复制链接]
ppgjx 发表于 2023-6-7 08:45
本帖最后由 ppgjx 于 2023-6-7 11:28 编辑

image.png
如图 语句已经执行到最后一个输出语句 后面没有任何代码 但是这个main函数没有结束 还是一直在运行中
这是maven
  <dependency>    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.14.9</version>
</dependency>
下面是代码 而且我发现只要请求 https://api.appstoreconnect.apple.com/v1/apps 这个网址就会卡主 请求百度则不会

已解决 确实是okhttp的bug 升级maven版本到4.1这个问题就没复现了

[Asm] 纯文本查看 复制代码
import okhttp3.*;

import javax.script.ScriptException;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.Proxy;

import java.util.*;
import java.util.concurrent.TimeUnit;


public class TextTo {

    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient().newBuilder()
                .build();
        MediaType mediaType = MediaType.parse("text/plain");
        MediaType JSON = MediaType.parse("application/json; charset=utf-8");
        RequestBody body = RequestBody.create(JSON, "{}");
        Request request = new Request.Builder()
                .url("https://api.appstoreconnect.apple.com/v1/apps")
                .method("POST", body)
                .build();
        Response response = client.newCall(request).execute();
        System.out.println("执行结束");
    }


}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

天王盖地虎a 发表于 2023-6-7 08:59
应该要在headers中添加身份验证信息
isiyuan 发表于 2023-6-7 09:22
lsy_loren 发表于 2023-6-7 09:29
没直接用过OkHttpClient,使用Springboot都是直接使用RestTemplate的
 楼主| ppgjx 发表于 2023-6-7 09:30
isiyuan 发表于 2023-6-7 09:22
接口是有鉴权和防刷的

问题是 他接口不管成功还是失败 这个main方法都应该会结束 而不是卡主
a142536 发表于 2023-6-7 09:33
OkHttpClient 还存活着了吧
QingTianGG 发表于 2023-6-7 09:38
是不是要手动关闭
fanchenio 发表于 2023-6-7 09:42
没用过okhttp,但是大概查了一下,okhttp发送请求时是新开一个线程去请求的,你访问的那个url,不知道是什么原因,可能是网络不通畅或者其他原因,卡住了,所以导致线程没有关闭,一直在请求中,所以导致你运行到最后一句,main也没有结束,因为还有线程存活,你设置个timeout。
vvvwxf 发表于 2023-6-7 09:52
你没有设置超时时间吧,okhttp是另外一个线程去访问的,你的main方法没有结束因为http请求还在。
##################### httpUtils properties #####################
ok.http.connect-timeout=60
ok.http.keep-alive-duration=300
ok.http.max-idle-connections=200
ok.http.read-timeout=60
ok.http.write-timeout=60


这是我现在的配置你可以根据你的需求做一下调整
Vvvvvoid 发表于 2023-6-7 10:01
不是 BUG , client 有自己的连接池, 并且池子里的线程是守护线程.
需要手动关闭 , 才会结束进程

client.connectionPool().evictAll();
client.dispatcher().executorService().shutdown();
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表