Skip to content

Commit 4d14540

Browse files
MartinVigliaroloMartin Vigliarolo
and
Martin Vigliarolo
authored
Changed method to get cookies from context when executing as webapp (#514)
* Changed method to get cookies from context when executing as webapp * Removed commented old code * Removed unused variable * Removed unused imports * Removed qualifiers from all the HttpClientJavaLib class. Added two constants for Set-Cookie and Cookie Co-authored-by: Martin Vigliarolo <[email protected]>
1 parent 6437e8b commit 4d14540

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

java/src/main/java/com/genexus/internet/HttpClientJavaLib.java

+23-21
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.security.KeyStoreException;
1010
import java.security.NoSuchAlgorithmException;
1111
import java.util.*;
12-
import com.genexus.servlet.http.ICookie;
12+
import com.genexus.ModelContext;
1313
import com.genexus.util.IniFile;
1414
import org.apache.http.*;
1515
import com.genexus.CommonUtil;
@@ -47,6 +47,8 @@
4747
import org.apache.http.ssl.SSLContexts;
4848
import org.apache.http.util.EntityUtils;
4949
import org.apache.logging.log4j.Logger;
50+
import com.genexus.webpanels.HttpContextWeb;
51+
import java.net.URI;
5052

5153
import 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

Comments
 (0)