diff --git a/wsclient/src/main/java/com/google/gson/webservice/client/RestClient.java b/wsclient/src/main/java/com/google/gson/webservice/client/RestClient.java index c276ea52..a6567b21 100644 --- a/wsclient/src/main/java/com/google/gson/webservice/client/RestClient.java +++ b/wsclient/src/main/java/com/google/gson/webservice/client/RestClient.java @@ -72,17 +72,32 @@ public class RestClient { logger.log(logLevel, "Opening connection to " + webServiceUrl); } conn = (HttpURLConnection) webServiceUrl.openConnection(); + return getResponse(callSpec, request, gson, conn); + } catch (IOException e) { + throw new WebServiceSystemException(e); + } finally { + closeIgnoringErrors(conn); + } + } + + /** + * Use this method if you want to mange the HTTP Connection yourself. This is useful when you + * want to use HTTP pipelining. + */ + public RestResponse getResponse( + RestCallSpec callSpec, RestRequest request, Gson gson, HttpURLConnection conn) { + try { + if (logger != null) { + URL webServiceUrl = getWebServiceUrl(callSpec); + logger.log(logLevel, "Opening connection to " + webServiceUrl); + } RestRequestSender requestSender = new RestRequestSender(gson, logLevel); requestSender.send(conn, request); RestResponseReceiver responseReceiver = new RestResponseReceiver(gson, callSpec.getResponseSpec(), logLevel); return responseReceiver.receive(conn); - } catch (IOException e) { - throw new WebServiceSystemException(e); } catch (IllegalArgumentException e) { throw new WebServiceSystemException(e); - } finally { - closeIgnoringErrors(conn); } }