14

I was looking through different blogs, sites and stack overflow for my answer. I have an app which shares images with a server. They provide a API token for the authentication, and the authentication is using curl. Can any one tell me how can I use curl in my app. I have to pass url as API token + password+ the path in the same form to get authentication. Can any one suggest some tricks to get it done.?

Thanks in advance

Happy Coding


Edit

Code

 public static String getRequest() {
        StringBuffer stringBuffer = new StringBuffer("");
        BufferedReader bufferedReader = null;
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet();

            URI uri = new URI("http://s1.campfirenow.com/room/5e1a1/speak.xml");
            httpGet.setURI(uri);
            httpGet.addHeader(BasicScheme.authenticate(
                    new UsernamePasswordCredentials("f48be786f212f1e35dd9s265b4675358123d838e53", "X"),
                    HTTP.UTF_8, false));

            httpGet.setHeader("Content-Type", "application/xml");
            HttpResponse httpResponse = httpClient.execute(httpGet);

This is the log cat response from the server (logcat output)

05-05 09:34:29.180: INFO/global(7283): Loaded time zone names for en_US in 7701ms.
05-05 09:34:29.230: DEBUG/dalvikvm(7283): GC_CONCURRENT freed 376K, 50% free 3080K/6087K, external 1357K/1828K, paused 6ms+6ms
05-05 09:34:30.750: DEBUG/dalvikvm(7283): GC_CONCURRENT freed 687K, 52% free 3059K/6343K, external 1357K/1828K, paused 7ms+6ms
05-05 09:34:31.470: DEBUG/dalvikvm(297): GC_EXPLICIT freed 10K, 55% free 2589K/5703K, external 716K/1038K, paused 115ms
05-05 09:34:31.851: INFO/server responce(7283): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
05-05 09:34:31.851: INFO/server responce(7283):        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
05-05 09:34:31.851: INFO/server responce(7283): <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
05-05 09:34:31.851: INFO/server responce(7283): <head>
05-05 09:34:31.851: INFO/server responce(7283):   <meta http-equiv="content-type" content="text/html;charset=utf-8" />
05-05 09:34:31.851: INFO/server responce(7283):   <meta name="robots" content="noindex,nofollow" />
05-05 09:34:31.851: INFO/server responce(7283):   <title>Campfire: Sign in</title>
05-05 09:34:31.851: INFO/server responce(7283):   <link href="/stylesheets/screen.css?1304413304" media="all" rel="stylesheet" type="text/css" />
05-05 09:34:31.851: INFO/server responce(7283):   <link href="/stylesheets/backpack-styles-for-login.css?1304413304" media="all" rel="stylesheet" type="text/css" />
05-05 09:34:31.851: INFO/server responce(7283):   <script src="/sprockets.js?1304413286" type="text/javascript"></script>
05-05 09:34:31.851: INFO/server responce(7283):   
05-05 09:34:31.851: INFO/server responce(7283):   <meta name="queenbee-id" content="1515015" />
05-05 09:34:31.851: INFO/server responce(7283):   <meta name="return-to-location" content="" />
05-05 09:34:31.851: INFO/server responce(7283): </head>
05-05 09:34:31.851: INFO/server responce(7283): <body class="modal login ">
05-05 09:34:31.851: INFO/server responce(7283): <div id="Container">
05-05 09:34:31.851: INFO/server responce(7283):   
05-05 09:34:31.851: INFO/server responce(7283):   <div id="Modal">    
05-05 09:34:31.851: INFO/server responce(7283):     <div class="inner">
05-05 09:34:31.851: INFO/server responce(7283):       
05-05 09:34:31.851: INFO/server responce(7283):       
05-05 09:34:31.851: INFO/server responce(7283):       
05-05 09:34:31.851: INFO/server responce(7283):       <a href="http://www.campfirenow.com" class="logo_link"><img alt="Campfire Logo" height="98" id="logo" src="/images/logo.png?1304413304" width="96" /></a>
05-05 09:34:31.851: INFO/server responce(7283):       
05-05 09:34:31.851: INFO/server responce(7283): <div id="login_dialog" class="login_dialog">
05-05 09:34:31.851: INFO/server responce(7283):   <form action="https://launchpad.37signals.com/authenticate" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QKfiIN4bccN8ch86vb6mcDneEec+B9iYp2/3AewQLs4=" /></div>
05-05 09:34:31.851: INFO/server responce(7283):     <input id="product" name="product" type="hidden" value="campfire" />
05-05 09:34:31.851: INFO/server responce(7283):     <input id="subdomain" name="subdomain" type="hidden" value="s1" />
05-05 09:34:31.851: INFO/server responce(7283):     <div id="user_name_login">
05-05 09:34:31.851: INFO/server responce(7283):       <h2>Username</h2>
05-05 09:34:31.851: INFO/server responce(7283):       <input autocapitalize="off" autocorrect="off" id="username" name="username" type="text" /><br/>
05-05 09:34:31.851: INFO/server responce(7283):       <h2>Password</h2>
05-05 09:34:31.851: INFO/server responce(7283):       <input id="password" name="password" type="password" /><br/>
05-05 09:34:31.851: INFO/server responce(7283):       <label><input class="auto" id="remember_me" name="remember_me" type="checkbox" value="1" />
05-05 09:34:31.851: INFO/server responce(7283):         Remember me on this computer
05-05 09:34:31.851: INFO/server responce(7283):       </label><br />
05-05 09:34:31.851: INFO/server responce(7283):       <input class="button" name="commit" type="submit" value="Sign in" />
05-05 09:34:31.851: INFO/server responce(7283):       <div class="extras">
05-05 09:34:31.851: INFO/server responce(7283):         <ul>
05-05 09:34:31.851: INFO/server responce(7283):           <li><strong>Help:</strong> <a href="https://s1.campfirenow.com/forgot_password">I forgot my username or password</a></li>
05-05 09:34:31.851: INFO/server responce(7283):           <li><a href="#" onclick="Login.loginWithOpenId(); return false;">Sign in using an OpenID instead</a></li>
05-05 09:34:31.851: INFO/server responce(7283):         </ul>
05-05 09:34:31.851: INFO/server responce(7283):       </div>
05-05 09:34:31.851: INFO/server responce(7283):     </div>
05-05 09:34:31.851: INFO/server responce(7283):     <div id="open_id_login" style="display: none">
05-05 09:34:31.851: INFO/server responce(7283):       <h2><img src="/images/openid-logo.png" alt="Sign in with an OpenID" /></h2>
05-05 09:34:31.851: INFO/server responce(7283):       <input autocapitalize="off" autocorrect="off" id="openid_identifier" name="openid_identifier" type="text" /><br/>
05-05 09:34:31.851: INFO/server responce(7283):       <label><input class="auto" id="remember_me" name="remember_me" type="checkbox" value="1" />
05-05 09:34:31.851: INFO/server responce(7283):         Remember me on this computer
05-05 09:34:31.851: INFO/server responce(7283):       </label><br />
05-05 09:34:31.851: INFO/server responce(7283):       <input class="button" name="commit" type="submit" value="Sign in" />
05-05 09:34:31.851: INFO/server responce(7283):       <div class="extras">
05-05 09:34:31.851: INFO/server responce(7283):         <ul>
05-05 09:34:31.851: INFO/server responce(7283):           <li><strong>Help:</strong> <a href="/authentication/open_id_alternative">My OpenID isn't working and I can't sign in</a></li>
05-05 09:34:31.851: INFO/server responce(7283):           <li><a href="#" onclick="Login.loginWithUserName(); return false;">Sign in using a standard username/password</a></li>
05-05 09:34:31.851: INFO/server responce(7283):         </ul>
05-05 09:34:31.851: INFO/server responce(7283):       </div>
05-05 09:34:31.851: INFO/server responce(7283):     </div>
05-05 09:34:31.851: INFO/server responce(7283):   </form>
05-05 09:34:31.851: INFO/server responce(7283): </div>
05-05 09:34:31.851: INFO/server responce(7283):   <script type="text/javascript">
05-05 09:34:31.851: INFO/server responce(7283): //<![CDATA[
05-05 09:34:31.851: INFO/server responce(7283): Login.loginWithUserName({"animate":false})
05-05 09:34:31.851: INFO/server responce(7283): //]]>
05-05 09:34:31.851: INFO/server responce(7283): </script>
05-05 09:34:31.851: INFO/server responce(7283):     </div>    
05-05 09:34:31.851: INFO/server responce(7283):   </div>
05-05 09:34:31.851: INFO/server responce(7283): </div>
05-05 09:34:31.851: INFO/server responce(7283): </body>
05-05 09:34:31.851: INFO/server responce(7283): </html>
05-05 09:34:31.921: DEBUG/dalvikvm(7283): GC_CONCURRENT freed 479K, 51% free 3158K/6343K, external 1357K/1828K, paused 6ms+9ms
rahul
  • 2,758
  • 5
  • 32
  • 53

1 Answers1

11

Let's assume that you want to do the following request:

curl -u user:password http://sample.campfirenow.com/rooms.xml

In Android you would do as follow.

public static String getRequest() {
        StringBuffer stringBuffer = new StringBuffer("");
        BufferedReader bufferedReader = null;
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet();

            URI uri = new URI("http://sample.campfirenow.com/rooms.xml");
            httpGet.setURI(uri);
            httpGet.addHeader(BasicScheme.authenticate(
                    new UsernamePasswordCredentials("user", "password"),
                    HTTP.UTF_8, false));

            HttpResponse httpResponse = httpClient.execute(httpGet);
            InputStream inputStream = httpResponse.getEntity().getContent();
            bufferedReader = new BufferedReader(new InputStreamReader(
                    inputStream));

            String readLine = bufferedReader.readLine();
            while (readLine != null) {
                stringBuffer.append(readLine);
                stringBuffer.append("\n");
                readLine = bufferedReader.readLine();
            }
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    // TODO: handle exception
                }
            }
        }
        return stringBuffer.toString();
    }

You can change HttpGet to HttpPost / HttpPut / HttpDelete depending on what you need to access.

Cheers.

  • thanks for the post..but I have an API token, I just want to use the curl in my android app. The site I want to access is http://developer.37signals.com/campfire/. I have found suggestions to use native codes, but never found how to use them perfectly, not even a single example. – rahul May 04 '11 at 10:31
  • I edited my answer and I provided you an example. Hope that help. –  May 04 '11 at 12:38
  • Thanks for spending time for me..thanks for the example... I do get some response from the server, but I get it as html, I was expecting XML or JSON. I have added the logcat output of the response in my question, do have any idea why this is happening. – rahul May 05 '11 at 12:18
  • I just check the Campfire API. You need to use HttpPost instead of HttpGet (see http://developer.37signals.com/campfire/messages). Have a look there http://stackoverflow.com/questions/5013373/android-send-and-receive-xml-via-http-post-method to have an hint. –  May 06 '11 at 08:15
  • hi, thanks, it was my mistake, i missed the 's' in the 'room'...it was 'rooms'....in the documentation of the campfire they were saying some thing about uploading files, but its not working...using your code do you have any suggestions. – rahul May 13 '11 at 06:00
  • Hi. I never uploaded data so I can't help you. You should ask another question. By the way, you don't have to contact me throught my website, I would have anwser when I have time! –  May 16 '11 at 07:05
  • Im sorry i was soo desperate to get this one working....sorry again to trouble you – rahul May 16 '11 at 07:10
  • @XavierBalloy any idea about paypal access token – Aditya Vyas-Lakhan Aug 12 '16 at 08:00