SocketException: Connection reset

Boa tarde,

Qual são os principais motivos dessa exception acontecer? No meu caso estou desconfiada que a conexão esteja encerrando de alguma forma antes de enviar as informações. Alguém aqui já passou por algo parecido?

No meu projeto a aplicação Consome uma api que traz dados do cliente, estou usando uma classe que é responsavel por fazer essa parte e conexão e é nela que está dando o erro:

java.net.SocketException: Connection reset
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1944)
at sun.net.www.protocol.htt...et.www.http.HttpClient.parseHTTP(HttpClient.java:678)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:706)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at com.everis.eva.utils.WebRequestUtil$Builder.callUrl(WebRequestUtil.java:233)
... 75 more

O trecho de código que o erro está indicando é esse, onde está a linha do BufferedReader:

public Map<String, String> callUrl(String uri) throws IOException, HTTPException {
			String queryString;
			if (this.queryParameters.size() > 0) {
				queryString = this.queryString();

				if ("GET".equals(this.method) || this.body != null) {
					String pre = "?";
					if (uri.contains("?")) {
						pre = "&";
					}
					uri += pre + queryString.substring(0, queryString.length() - 1);
				} else {
					this.body = queryString;
					this.contentType(MediaType.APPLICATION_FORM_URLENCODED.getType());
				}
			}

			URL url = new URL(uri);

			HttpURLConnection con;

			if (this.proxyAddress != null && this.proxyPort != null) {
				Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyAddress, proxyPort));
				con = (HttpURLConnection) url.openConnection(proxy);
			} else {
				con = (HttpURLConnection) url.openConnection();
			}

			con.setRequestMethod(this.method);
			con.setDoOutput(this.body != null);
			con.setDoInput(true);
			con.setUseCaches(false);

			for (Entry<Object, Object> header : this.headers.entrySet()) {
				con.setRequestProperty((String) header.getKey(), (String) header.getValue());
			}

			if (this.body != null) {
				con.getOutputStream().write(this.body.getBytes(Charset.forName("UTF-8")));
			}

			try {
				StringBuilder sb = new StringBuilder();
				BufferedReader reader = new BufferedReader(
						new InputStreamReader(con.getInputStream(), Charset.forName("UTF-8")));
				String line;

				while ((line = reader.readLine()) != null) {
					sb.append(line);
				}

				Map<String, String> response = new HashMap<>();
				response.put("text", sb.toString());
				response.put("code", String.valueOf(con.getResponseCode()));

				return response;
			} catch (Exception ex) {
				throw new HTTPException(con.getResponseCode());
			}
		}