调第三方接口报Connection Reset问题,主函数就只调用了这两个函数,并不是每次都会出错,但出错的概率很大,求解

public static InputStream jsonWithToken() throws IOException {
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpGet httpGet = new HttpGet(uri);
        //计算token
        String token = TokenCalculateUtils.base64Token(userColonPassword);
        httpGet.setHeader("Authorization", "Basic " + token);
        try {
            HttpResponse response = httpClient.execute(httpGet);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) {
                HttpEntity httpEntity = response.getEntity();
                return httpEntity.getContent();
            } else {
                System.out.println("响应失败:" + statusCode);
                return null;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
public static void dataSaveOrUpdate(InputStream inputStream) throws IOException {
        JsonFactory jsonFactory = new MappingJsonFactory();
        JsonParser jsonParser = null;
        SessionFactory sessionFactory = null;
        Session session = null;
        try {
            jsonParser = jsonFactory.createParser(inputStream);
            JsonToken jsonToken = jsonParser.nextToken();
            if (jsonToken != JsonToken.START_OBJECT) {
                System.out.println("Error: root should be object: quiting.");
                return;
            }
            while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
                String fieldName = jsonParser.getCurrentName();
                if (fieldName.equals("results")) {
                    if (jsonParser.nextToken() == JsonToken.START_ARRAY) {
                        //读取配置文件,获取数据库元信息对象,configure()默认加载hibernate.cfg.xml,如需自定义配置文件名,将文件名作为参数传递
                        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
                        sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
                        session = sessionFactory.openSession();
                        while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
                            **_//出错位置!!!_**
                            JsonNode node = jsonParser.readValueAsTree();
                            Transaction transaction = session.beginTransaction();
                            JushaAreaCustomer jushaAreaCustomer = new JushaAreaCustomer();
                            jushaAreaCustomer.setCustomerIndex(node.get("CACCOUNT_UUID").textValue());
                            jushaAreaCustomer.setCustomerText(node.get("TACCOUNT_UUID").textValue());
                            jushaAreaCustomer.setAreaIndex(node.get("CUUID_CONTENT").textValue());
                            jushaAreaCustomer.setAreaText(node.get("TUUID_CONTENT").textValue());
                            jushaAreaCustomer.setUpdateTime(new Timestamp(System.currentTimeMillis()));
                            session.saveOrUpdate(jushaAreaCustomer);
                            transaction.commit();
                            System.out.println(n);
                        }
                    } else {
                        System.out.println("Error: records should be an array: skipping.");
                        jsonParser.skipChildren();
                    }
                } else if (!fieldName.equals("__count")) {//如果当前未到所
                    // 需字段层级则进入下一层,__count为所需字段层级中第一个字段
                    System.out.println("Unprocessed property: " + fieldName);
                    jsonParser.nextToken();
                } else {//如果当前已到所需字段层级,则跳至所需字段
                    System.out.println("Unprocessed property: " + fieldName);
                    jsonParser.skipChildren();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (session != null) {
                session.close();
            }
            if (sessionFactory != null) {
                sessionFactory.close();
            }
            if (jsonParser != null) {
                jsonParser.close();
            }
            inputStream.close();
        }
    }

img

img

url的服务器端给你的连接发了RST TCP包,(服务器主动断开了连接),原因可以有多种,比如服务器端检测到连接数太多,主动关一些连接(你的正好中了);或者服务器觉得session过期了,强制关掉你的连接。
你作为client端,只能被动接受,做好相应的异常处理/连接管理(比如重连)。