Comments (2)
I implemented a solution to our problem which allows to do the process using only one session. The approach makes use of a new HttpSession class (HttpCloseableSession) which has CookieStore, HttpContext, CredentialsProvider and CloseableHttpClient.
This CloseableHttpClient is built by using the builder which allows you to set the proxy and the configs you’ve done in the HTTPSession setting area. I also created a new HTTPCloseableMethod class which has a similar approach to the original one but using the new features.
Finally, I added two new methods to HTTPFactory to use a custom GET and HEAD. The new methods only need the URL because the HTTPCloseableSession is static. The new HTTPCloseableMethod accepts a HTTPSession.Methods and contains the execute method. When the opendap calls to this get, it is able to call execute and close the client (you can take a look to DConnect2.java
How can we make a request now?
It is very simple:
HTTPCloseableSession.setCredentials("username", "password");
HTTPCloseableMethod method = HTTPFactory.GET(urlString);
int statusCode = method.execute();
is = method.getResponseAsStream();
method.close();
You can see my approach is ready to basic authentication but can be used with others. I've tried not to modify so much of your code, only the esential part to make it work but I think it can be a good way to start.
Please take a look
from thredds.
The deprecations are because we were forced to switch to Apache httpclient 4.4.x
before we were ready. The existing code is based on Apache httpclient 4.3.x.
The 4.4 code is substantially refactored compared to 4.3. The 4.3 API is supported,
but deprecated, so that is why you are seeing them.
The complete conversion of the code to 4.4 is underway, but probably will not
be available until version 5 of thredds.
BTW, you say "my approach is ready to basic authentication but can be used with others."
Can you give specifics, say for URS. We already or plan to support a wide variety of authorization mechanisms: Basic, ESG (client-side certificates), URS (redirection) and soon to be others.
from thredds.
Related Issues (20)
- Possible loop in thredds.client.catalog graph?
- Possible Issue with logging ResponseSize caused by insufficient storage type HOT 4
- variable attributes showing up in OPeNDAP global attributes! HOT 8
- Performance Issue with high variable and dimension count
- Thredds do not behave well behind Nginx proxy serving as SSL termination HOT 4
- Question regarding WCS DescribeCoverage ResponseCRSs HOT 4
- Wrong URL in description of this repository HOT 1
- Cross-Origin Read Blocking (CORB) blocked cross-origin response thredds HOT 2
- EOFException on NCDump data
- DAP4 in TDS dap4.core.util.DapException: Resource root not found HOT 3
- WMS GetMap Request with style=contour Returns Error HOT 14
- Unexpected behavior when querying area around Meridian HOT 2
- Date truncated by cast to long HOT 7
- NCML Time axis aggregation with missing / time gaps HOT 6
- double encoding of spaces in filenames when user click on "Get Binary" or "Get ASCII" in OPeNDAP download form HOT 5
- trimDirectiveWhitespaces breaking GetTransect HOT 3
- Unsigned types in NcML
- Tracking log4j security issues HOT 10
- blank Godiva2 basemap HOT 1
- WMS service broken in 4.6.19+ HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thredds.