77import javax .ws .rs .client .Client ;
88import javax .ws .rs .client .ClientBuilder ;
99import javax .ws .rs .client .Entity ;
10- import javax .ws .rs .client .WebTarget ;
11- import javax .ws .rs .core .MultivaluedMap ;
10+ import javax .ws .rs .client .Invocation .Builder ;
1211import javax .ws .rs .core .Response ;
12+ import java .util .Map ;
1313
1414/**
1515 * Base HTTP client class solely responsible for making
@@ -29,18 +29,18 @@ public enum DEFAULTS {
2929 }
3030 }
3131
32- private final MultivaluedMap <String ,Object > headers ;
32+ private final Map <String ,Object > headers ;
3333 private final Client client ;
3434
3535 private boolean secureConnection = true ;
3636
37- public HttpClient (MultivaluedMap <String ,Object > headers , int connectTimeoutSeconds , int readTimeoutSeconds ) {
37+ public HttpClient (Map <String ,Object > headers , int connectTimeoutSeconds , int readTimeoutSeconds ) {
3838 this (headers );
3939 setConnectTimeoutSeconds (connectTimeoutSeconds );
4040 setReadTimeoutSeconds (readTimeoutSeconds );
4141 }
4242
43- public HttpClient (MultivaluedMap <String ,Object > headers ) {
43+ public HttpClient (Map <String ,Object > headers ) {
4444 this .headers = headers ;
4545 this .client = buildClient ();
4646 setReadTimeoutSeconds (DEFAULTS .READ_TIMEOUT_SECONDS .value );
@@ -58,31 +58,27 @@ public HttpClient(MultivaluedMap<String,Object> headers) {
5858 */
5959 public ClientResponse execute (REQUEST_TYPES requestType , String url , String data ) {
6060 Response response ;
61- final WebTarget target = client . target ( getHttpUrl (url ));
61+ final Builder requestBuilder = clientRequestBuilder ( (url ));
6262
6363 switch (requestType ) {
6464 case POST :
65- response = target .request ().headers (headers ).post (Entity .json (data ), Response .class );
66- break ;
67-
68- case GET :
69- response = target .request ().headers (headers ).get (Response .class );
65+ response = requestBuilder .post (Entity .json (data ), Response .class );
7066 break ;
7167
7268 case PUT :
73- response = target . request (). headers ( headers ) .put (Entity .json (data ), Response .class );
69+ response = requestBuilder .put (Entity .json (data ), Response .class );
7470 break ;
7571
7672 case PATCH :
77- response = target . request (). headers ( headers ) .method ("PATCH" , Entity .json (data ), Response .class );
73+ response = requestBuilder .method ("PATCH" , Entity .json (data ), Response .class );
7874 break ;
7975
8076 case DELETE :
81- response = target . request (). headers ( headers ) .delete (Response .class );
77+ response = requestBuilder .delete (Response .class );
8278 break ;
8379
8480 default :
85- response = target . request (). headers ( headers ) .get (Response .class );
81+ response = requestBuilder .get (Response .class );
8682 break ;
8783
8884 }
@@ -150,6 +146,16 @@ private Client buildClient() {
150146 return client ;
151147 }
152148
149+ private Builder clientRequestBuilder (String url ) {
150+ Builder requestBuilder = client .target (getHttpUrl (url )).request ();
151+
152+ for (Map .Entry <String , Object > header : headers .entrySet ()) {
153+ requestBuilder .header (header .getKey (), header .getValue ());
154+ }
155+
156+ return requestBuilder ;
157+ }
158+
153159 /**
154160 * Build HTTP client with custom config used for requests
155161 * like:
0 commit comments