• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Java with curl (http://curl.haxx.se/)

 
Anil Karamchandan
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

I am not sure if this is the correct place to post this, please feel free if the moderators can find a better place for this post. I have a general question regarding using curl (http://curl.haxx.se/) with Java. I have a web-application running in tomcat, based on certain actions in my web-applications I need to write a java code which would trigger curl. Curl would then query a third-party application and return an XML/JSON.

this has to be read by me and return appropriate response to the user.

Can this be done ? I see that curl has a binary distribution for Linux, once I download it (http://curl.haxx.se/download.html) how do I call this from my java web-app.

thanks !
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64959
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Does it have to be curl? There are any number of ways to generate HTTP requests in Java.
 
Anil Karamchandan
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I asked the same question to my boss and the answer was yes. Just for curiosity what other ways are you referring to ,I know httpConnection class can be used.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64959
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
There are the classes in java.net, and there are any number of 3rd-party implementations such as HttpClient.
 
Anil Karamchandan
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thanks but how about doing it with curl ?
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64959
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Seems to me that calling out to a command line tool to do this is the worst possible approach.

But it looks as if there's a Java binding -- you might want to check that out.
 
Anil Karamchandan
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

Looking at all the cases/possibilities, i have opted to do this using httpclient or urlconnection class. I have not written the complete code but have just manage to write which would get us started atleast..

If I had used curl - I would have to write the following.



this would have returned me an output in XML

with httpclient i think this could be done with something like this...


With this, I have only taken care of the parameters, how to I pass the username and password with this ? any help ?
Also by default, with CURL the username and password is encoded with base64 internally, that would mean now I have to take care of 2 things

1. Encode the Username and password with base64 format
2. Accommodate the username and password in httpclient call.


 
Anil Karamchandan
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ok, I was able to add authentication and encoding to the code, as of now the code looks something like this.



Using this I get the return value for rCode as "406". Why am I receiving a response which is "Not Acceptable" Anything which would help me debug better and fix this.
 
Rob Spoor
Sheriff
Pie
Posts: 20545
56
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
First of all, the setCredentials method you're calling is deprecated. You should switch to the one that takes AuthScope and Credentials objects.

Secondly, I don't think you need to base64 encode the user name and password. I've checked the man page and found absolutely nothing about base64.
 
Anil Karamchandan
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Rob,

thanks for the reply, by authsope you meant, get the "realm" String using the authScope class ? I did saw that earlier but was not able to get more info about that ? can you please elaborate ?

thanks !
 
Rob Spoor
Sheriff
Pie
Posts: 20545
56
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
will create an AuthScope instance for host www.testabc.com on port 80 for any realm.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic