4848
4949import java .io .BufferedReader ;
5050import java .io .Closeable ;
51+ import java .io .EOFException ;
5152import java .io .IOException ;
5253import java .io .InputStream ;
5354import java .io .InputStreamReader ;
5455import java .io .OutputStream ;
56+ import java .net .ConnectException ;
5557import java .net .HttpURLConnection ;
58+ import java .net .NoRouteToHostException ;
5659import java .net .ProtocolException ;
60+ import java .net .SocketException ;
5761import java .net .SocketTimeoutException ;
5862import java .net .URL ;
63+ import java .net .UnknownHostException ;
5964import java .util .Date ;
6065import java .util .HashMap ;
6166import java .util .List ;
6671import javax .annotation .Nullable ;
6772import javax .net .ssl .HttpsURLConnection ;
6873import javax .net .ssl .SSLContext ;
74+ import javax .net .ssl .SSLException ;
6975import javax .net .ssl .SSLSocketFactory ;
7076
7177import io .opentelemetry .api .trace .Span ;
@@ -313,7 +319,7 @@ private static HttpRequest constructHttpRequest(@NonNull HttpClient.HttpMethod h
313319 * @return The converted string
314320 * @throws IOException Thrown when failing to access inputStream stream.
315321 */
316- private String convertStreamToString (final InputStream inputStream ) throws ClientException {
322+ private String convertStreamToString (final InputStream inputStream ) throws IOException {
317323 try {
318324 final BufferedReader reader = new BufferedReader (new InputStreamReader (inputStream ,
319325 AuthenticationConstants .CHARSET_UTF8 ));
@@ -326,8 +332,6 @@ private String convertStreamToString(final InputStream inputStream) throws Clien
326332 }
327333
328334 return stringBuilder .toString ();
329- } catch (IOException e ) {
330- throw ConnectionError .FAILED_TO_READ_FROM_INPUT_STREAM .getClientException (e );
331335 } finally {
332336 safeCloseStream (inputStream );
333337 }
@@ -353,13 +357,12 @@ private static void safeCloseStream(final Closeable stream) {
353357 }
354358
355359 private HttpResponse executeHttpSend (HttpRequest request , Consumer <HttpResponse > completionCallback ) throws ClientException {
356- final HttpURLConnection urlConnection = setupConnection (request );
357-
358- sendRequest (urlConnection , request .getRequestContent (), request .getRequestHeaders ().get (HttpConstants .HeaderField .CONTENT_TYPE ));
359-
360360 InputStream responseStream = null ;
361361 HttpResponse response = null ;
362362 try {
363+ final HttpURLConnection urlConnection = setupConnection (request );
364+ sendRequest (urlConnection , request .getRequestContent (), request .getRequestHeaders ().get (HttpConstants .HeaderField .CONTENT_TYPE ));
365+
363366 try {
364367 responseStream = urlConnection .getInputStream ();
365368 } catch (final SocketTimeoutException e ) {
@@ -372,12 +375,7 @@ private HttpResponse executeHttpSend(HttpRequest request, Consumer<HttpResponse>
372375 responseStream = urlConnection .getErrorStream ();
373376 }
374377
375- final int statusCode ;
376- try {
377- statusCode = urlConnection .getResponseCode ();
378- } catch (IOException e ) {
379- throw ConnectionError .FAILED_TO_GET_RESPONSE_CODE .getClientException (e );
380- }
378+ final int statusCode = urlConnection .getResponseCode ();
381379
382380 final Date date = new Date (urlConnection .getDate ());
383381
@@ -419,7 +417,8 @@ private HttpResponse executeHttpSend(HttpRequest request, Consumer<HttpResponse>
419417 AttributeName .http_status_code .name (),
420418 response .getStatusCode ()
421419 );
422-
420+ } catch (final IOException e ) {
421+ throw ConnectionError .getClientException (e );
423422 } finally {
424423 completionCallback .accept (response );
425424 safeCloseStream (responseStream );
@@ -428,14 +427,9 @@ private HttpResponse executeHttpSend(HttpRequest request, Consumer<HttpResponse>
428427 return response ;
429428 }
430429
431- private HttpURLConnection setupConnection (HttpRequest request ) throws ClientException {
430+ private HttpURLConnection setupConnection (HttpRequest request ) throws IOException {
432431 final String methodName = ":setupConnection" ;
433- final HttpURLConnection urlConnection ;
434- try {
435- urlConnection = HttpUrlConnectionFactory .createHttpURLConnection (request .getRequestUrl ());
436- } catch (IOException e ) {
437- throw ConnectionError .FAILED_TO_OPEN_CONNECTION .getClientException (e );
438- }
432+ final HttpURLConnection urlConnection = HttpUrlConnectionFactory .createHttpURLConnection (request .getRequestUrl ());
439433
440434 // Apply request headers and update the headers with default attributes first
441435 final Set <Map .Entry <String , String >> headerEntries = request .getRequestHeaders ().entrySet ();
@@ -454,12 +448,7 @@ private HttpURLConnection setupConnection(HttpRequest request) throws ClientExce
454448 Logger .warn (TAG + methodName , "gets a request from an unexpected protocol: " + request .getRequestUrl ().getProtocol ());
455449 }
456450
457- try {
458- urlConnection .setRequestMethod (request .getRequestMethod ());
459- } catch (ProtocolException e ) {
460- throw ConnectionError .FAILED_TO_SET_REQUEST_METHOD .getClientException (e );
461- }
462-
451+ urlConnection .setRequestMethod (request .getRequestMethod ());
463452 urlConnection .setConnectTimeout (getConnectTimeoutMs ());
464453 urlConnection .setReadTimeout (getReadTimeoutMs ());
465454 urlConnection .setInstanceFollowRedirects (true );
@@ -479,7 +468,7 @@ private int getConnectTimeoutMs() {
479468
480469 private static void sendRequest (@ NonNull final HttpURLConnection connection ,
481470 final byte [] contentRequest ,
482- final String requestContentType ) throws ClientException {
471+ final String requestContentType ) throws IOException {
483472 if (contentRequest == null ) {
484473 return ;
485474 }
@@ -497,8 +486,6 @@ private static void sendRequest(@NonNull final HttpURLConnection connection,
497486 try {
498487 out = connection .getOutputStream ();
499488 out .write (contentRequest );
500- } catch (IOException e ) {
501- throw ConnectionError .FAILED_TO_WRITE_TO_OUTPUT_STREAM .getClientException (e );
502489 } finally {
503490 safeCloseStream (out );
504491 }
0 commit comments