99import java .security .KeyStoreException ;
1010import java .security .NoSuchAlgorithmException ;
1111import java .util .*;
12- import com .genexus .servlet . http . ICookie ;
12+ import com .genexus .ModelContext ;
1313import com .genexus .util .IniFile ;
1414import org .apache .http .*;
1515import com .genexus .CommonUtil ;
4747import org .apache .http .ssl .SSLContexts ;
4848import org .apache .http .util .EntityUtils ;
4949import org .apache .logging .log4j .Logger ;
50+ import com .genexus .webpanels .HttpContextWeb ;
51+ import java .net .URI ;
5052
5153import javax .net .ssl .SSLContext ;
5254
@@ -115,7 +117,9 @@ public void setTimeout(int timeout)
115117 private ByteArrayEntity entity = null ; // Para mantener el stream luego de cerrada la conexion en la lectura de la response
116118 private Boolean lastAuthIsBasic = null ;
117119 private Boolean lastAuthProxyIsBasic = null ;
118- private static IniFile clientCfg = new com .genexus .ModelContext (com .genexus .ModelContext .getModelContextPackageClass ()).getPreferences ().getIniFile ();
120+ private static IniFile clientCfg = new ModelContext (ModelContext .getModelContextPackageClass ()).getPreferences ().getIniFile ();
121+ private static final String SET_COOKIE = "Set-Cookie" ;
122+ private static final String COOKIE = "Cookie" ;
119123
120124
121125 private void resetExecParams () {
@@ -167,7 +171,7 @@ private void resetStateAdapted()
167171 public void setURL (String stringURL ) {
168172 try
169173 {
170- java . net . URI url = new java . net . URI (stringURL );
174+ URI url = new URI (stringURL );
171175 setHost (url .getHost ());
172176 setPort (url .getPort ());
173177 setBaseURL (url .getPath ());
@@ -181,10 +185,10 @@ public void setURL(String stringURL) {
181185 }
182186
183187 private String getURLValid (String url ) {
184- java . net . URI uri ;
188+ URI uri ;
185189 try
186190 {
187- uri = new java . net . URI (url );
191+ uri = new URI (url );
188192 if (!uri .isAbsolute ()) // En caso que la URL pasada por parametro no sea una URL valida (en este caso seria que no sea un URL absoluta), salta una excepcion en esta linea, y se continua haciendo todo el proceso con los datos ya guardados como atributos
189193 return url ;
190194 else {
@@ -236,14 +240,12 @@ private static SSLConnectionSocketFactory getSSLSecureInstance() {
236240 }
237241
238242 private CookieStore setAllStoredCookies () {
239- ICookie [] webcookies ;
240-
241243 CookieStore cookiesToSend = new BasicCookieStore ();
242- if (!com . genexus . ModelContext .getModelContext ().isNullHttpContext ()) { // Caso de ejecucion de varias instancia de HttpClientJavaLib, por lo que se obtienen cookies desde sesion web del browser
243- webcookies = (( com . genexus . webpanels . HttpContextWeb ) com . genexus . ModelContext . getModelContext (). getHttpContext ()). getCookies ();
244- ICookie webcookie = webcookies == null ? null : Arrays . stream ( webcookies ). filter ( cookie -> "Set-Cookie" . equalsIgnoreCase ( cookie . getName ())). findAny (). orElse ( null );
245- if (webcookie != null )
246- this .addHeader ("Cookie" , com . genexus . webpanels . WebUtils . decodeCookie ( webcookie . getValue () ));
244+ if (!ModelContext .getModelContext ().isNullHttpContext ()) { // Caso de ejecucion de varias instancia de HttpClientJavaLib, por lo que se obtienen cookies desde sesion web del browser
245+
246+ String selfWebCookie = (( HttpContextWeb ) ModelContext . getModelContext (). getHttpContext ()). getCookie ( SET_COOKIE );
247+ if (! selfWebCookie . isEmpty () )
248+ this .addHeader (COOKIE , selfWebCookie . replace ( "+" , ";" ));
247249
248250 } else { // Caso se ejecucion de una misma instancia HttpClientJavaLib mediante command line
249251 if (!getIncludeCookies ())
@@ -262,14 +264,14 @@ private CookieStore setAllStoredCookies() {
262264
263265 private void SetCookieAtr (CookieStore cookiesToSend ) {
264266 if (cookiesToSend != null ) {
265- if (com . genexus . ModelContext .getModelContext ().isNullHttpContext ()) {
267+ if (ModelContext .getModelContext ().isNullHttpContext ()) {
266268 for (Cookie c : cookiesToSend .getCookies ())
267269 cookies .addCookie (c );
268270 } else {
269271 try {
270- com . genexus . webpanels . HttpContextWeb webcontext = ((com . genexus . webpanels . HttpContextWeb ) com . genexus . ModelContext .getModelContext ().getHttpContext ());
272+ HttpContextWeb webcontext = ((HttpContextWeb ) ModelContext .getModelContext ().getHttpContext ());
271273
272- Header [] headers = this .response .getHeaders ("Set-Cookie" );
274+ Header [] headers = this .response .getHeaders (SET_COOKIE );
273275 if (headers .length > 0 ) {
274276 String webcontextCookieHeader = "" ;
275277 for (Header header : headers ) {
@@ -278,9 +280,9 @@ private void SetCookieAtr(CookieStore cookiesToSend) {
278280 webcontextCookieHeader += cookieKeyAndValue [0 ] + "=" + cookieKeyAndValue [1 ] + "; " ;
279281 }
280282 webcontextCookieHeader = webcontextCookieHeader .trim ().substring (0 ,webcontextCookieHeader .length ()-2 ); // Se quita el espacio y la coma al final
281- webcontext .setCookie ("Set-Cookie" ,webcontextCookieHeader ,"" ,CommonUtil .nullDate (),"" ,this .getSecure ());
283+ webcontext .setCookie (SET_COOKIE ,webcontextCookieHeader ,"" ,CommonUtil .nullDate (),"" ,this .getSecure ());
282284 }
283- com . genexus . ModelContext .getModelContext ().setHttpContext (webcontext );
285+ ModelContext .getModelContext ().setHttpContext (webcontext );
284286 } catch (Exception e ) {
285287 e .printStackTrace ();
286288 }
@@ -411,7 +413,7 @@ public void execute(String method, String url) {
411413 }
412414
413415 url = setPathUrl (url );
414- url = com . genexus . CommonUtil .escapeUnsafeChars (url );
416+ url = CommonUtil .escapeUnsafeChars (url );
415417
416418 if (getSecure () == 1 ) // Se completa con esquema y host
417419 url = url .startsWith ("https://" ) ? url : "https://" + getHost ()+ (getPort () != 443 ?":" +getPort ():"" )+ url ; // La lib de HttpClient agrega el port
@@ -447,7 +449,7 @@ public void execute(String method, String url) {
447449
448450 ByteArrayEntity dataToSend ;
449451 if (!getIsMultipart () && getVariablesToSend ().size () > 0 )
450- dataToSend = new ByteArrayEntity (com . genexus . CommonUtil .hashtable2query (getVariablesToSend ()).getBytes ());
452+ dataToSend = new ByteArrayEntity (CommonUtil .hashtable2query (getVariablesToSend ()).getBytes ());
451453 else
452454 dataToSend = new ByteArrayEntity (getData ());
453455 httpPost .setEntity (dataToSend );
@@ -594,7 +596,7 @@ public void getHeader(String name, java.util.Date[] value) {
594596 return ;
595597 try
596598 {
597- value [0 ] = com . genexus . CommonUtil .getHeaderAsDate (response .getFirstHeader (name ).getValue ());
599+ value [0 ] = CommonUtil .getHeaderAsDate (response .getFirstHeader (name ).getValue ());
598600 }
599601 catch (IOException e )
600602 {
@@ -619,7 +621,7 @@ public InputStream getInputStream() throws IOException {
619621 public InputStream getInputStream (String stringURL ) throws IOException
620622 {
621623 try {
622- java . net . URI url = new java . net . URI (stringURL );
624+ URI url = new URI (stringURL );
623625 HttpGet gISHttpGet = new HttpGet (String .valueOf (url ));
624626 CloseableHttpClient gISHttpClient = HttpClients .createDefault ();
625627 return gISHttpClient .execute (gISHttpGet ).getEntity ().getContent ();
0 commit comments