Can org.apache.httpcomponents.httpclient_4.5.1.jar be replaced with org.apache.httpcomponents.httpclient_4.5.13.jar and the .classpath be modified?

Can org.apache.httpcomponents.httpclient_4.5.1.jar be replaced with org.apache.httpcomponents.httpclient_4.5.13.jar and the .classpath be modified ?

A) Locally
B) In the version that’s used on Jenkins with Katalon Plugin?

The problem: I’m working on the script that uses Twilio API, which is using 4.5.13:

Katalon is using 4.5.1:

As a result, it’s not working (see NoSuchMethodError · Issue #603 · twilio/twilio-java · GitHub) :

The problem is that I’m not sure

  1. wthether KSE will still be working if org.apache.httpcomponents.httpclient_4.5.1.jar is replaced with org.apache.httpcomponents.httpclient_4.5.13.jar and the .classpath is modified accordingly
  2. Even if 1) is possible, my understanding that Katalon Jenkins plugin will still be using 4.5.1 each time it sets the Katalon environment on our on-demand nodes

By the way, 1 more question, why Katalon is still using 4.5.1, which is a pretty old version?

I was trying to delete 4.5.1 from .classpath but it keeps getting back when KSE is starting.

Is this IT? If some API needed for automation happens to have some discrepancy with what is used by Katalon, we are out of luck (to put it mildly)?

If this is a case, hey, KATALON, WHY CANNOT YOU USE VERSION 4.5.13 INSTEAD OF 4.5.1?

Read the section titled “Exclude built-in libraries” in the doc:

You can exclude the org.apache.httpcomponents.httpclient_4.5.1.jar which is built-in out of the .classpath file. And at the same time you can include org.apache.httpcomponents.httpclient_4.5.13.jar in the Drivers folder, which will be added into the .classpath file. Effectively you can replace the 4.5.1 with the 4.5.13.

3 Likes

Thank you for all your help, @kazurayam !

Do you happen to have some link that can help us learn more about using Gradle:

other than this one GitHub - katalon-studio/katalon-gradle-plugin: Katalon Studio Gradle plugin?

If you want to learn about Gradle from scratch, have a look at :

2 Likes

See the drivers task in my sample Katalon Studio project that uses Gradle to download external dependencies (jar files) from the Maven Central into the <projectDir>/Drivers folder:

This code would show you what you need to do to solve external dependencies with Gradle’s basic instruments.

The drivers task does near similar to what Katalon Studio Gradle plugin does.

1 Like

If you just want to use httpcline 4.5.13, you do not need Gradle at all.

  1. You want to visit https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.5.13
  2. Find a link to jar. Click it to download the jar file to save it into the <projectDir>/Drivers folder.

You are done.

1 Like

Katalon Studio uses the httpcomponets for its own sake (WebService Testing, possibly), not for you. The httpcomponents 4.5.1 is enough for KS. KS does not need 4.5.13 for its own sake.

Thank you, @kazurayam. I’d already done something like that (I downloaded the Twilio API jar that includes org.apache.httpcomponents.httpclient_4.5.13 to the Drivers folder). I asked you for help with some info about using Gradle because you are one of the most knowledgable and helpful experts I know.

By the way )) What is your opinion on this API/Web Service Encoded Variables - #5 by gdearest07
" gdearest07

20h
"@em817m , I apologize for writing in your topic w/o having any solution. I’m just wondering is it the right aproach to have an encripted security key stored in Katalon Project? Whatever is encrypted can de decripted. Woudn’t it be safer to store a security key in some environment variable*?"*

What would be the best way to use secret API keys (needed to work with the Twilio API written in Java) so they can be used in the Katalon WEB scripts (not API scripts) that are to be run on Jenkins (with Katalon plugin) nodes that are used on demand?

I personally would never store any serious credential information in a project (= Git repository) regardless encripted or not. It is too scarely for me to save serious credentails in a Git repository, which should be open and shared, even if encripted.

I personally store credentails (URL hostname + username/password) in my local Mac’s Keychain.
.

My selenium test scripts reads the Keychain database via Command Line Interface = security command of Mac. A working sample code is here:

However, you should re-think if the password you have in your mind is REALLY serious one that must be strongly protected. Does it cost much money for you if the password is exposed public? In many cases, username/password pairs used for UI testing are not really worth hard-to-break security efforts; they may be just data.

1 Like

Thank you, @kazurayam . If the credentials are stored just locally, how can they be used while running the scripts on Jenkins nodes (not the local ones) used on demand?

I don’t know. It’s your task, not mine, to solve it.

use a vault. side note, jenkins have his own

Thanks, @bionel . Do you happen to know how exactly to store sensitive data both locally and, for example, in the (external) Jenkins and to be able to pass them at runtime to Katalon while running either locally or, for example, in the (external) Jenkins by using the same code?

you are confused. you have to figure it out what has to be local and what global.
i already gave the hints. do your homework.

Let’s say we need to pass “THE_MOST_SECRET_DATA” at runtime to Katalon (regardless of where it’s stored for the time being). How do we do that?

Is there some generic aproach that can be used regardless of where the sensitive data are stored?

For example, in Can org.apache.httpcomponents.httpclient_4.5.1.jar be replaced with org.apache.httpcomponents.httpclient_4.5.13.jar and the .classpath be modified? - #10 by kazurayam there is a concrete solution for the case when the data is stored in local Mac’s Keychain , which is great but it cannot be used in other cases,

If I were to make my local PC and my remote CI/CD server to share some information, I would store the information in AWS S3 storage. I would choose S3 because I am accustomed to it; others may choose Google Drive or something in Microsoft Azure. I would allocate restricted access permissions to the S3 storage by the AWS way.

I will write my test script code to read the information from AWS S3 storage. I know how to write my Groovy Test Case script so that they communicate with AWS S3. It requires a custom (a bit deep) coding technique. Unfortunately Katalon does not provide any built-in capabilty to use AWS S3.

Though you may ask a recursive question: how to manage the credential information that manages access to AWS S3 itself. Well, that is the first topic you need to learn for getting started with AWS in general. See the following article for example

Too much complicated for you? Then you should invent your own concrete way.

1 Like

The following post shows a sample Katalon project that reads data from AWS S3.

1 Like

see the other topic: API/Web Service Encoded Variables - #15 by bionel

Thanks again for all your help, @kazurayam!

And, also, I’d just like to let you know that there is a very unpleasnt side effect of including twilio-8.34.1-jar-with-dependencies.jar in the Drivers folder