在Android中的CURL

我正在通过不同的博客,网站和堆栈溢出来寻找我的答案.我有一个与服务器共享图像的应用程序.它们为身份验证提供API令牌,并且身份验证使用curl.任何人都可以告诉我如何在我的应用程序中使用curl.我必须将url作为API令牌密码传递给相同形式的路径才能获得身份验证.任何人都可以建议一些技巧来完成它.

提前致谢

快乐的编码

编辑

 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);

这是来自服务器的log cat响应(logcat输出)

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

解决方法:

我们假设您要执行以下请求:

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

在Android中,您将执行以下操作.

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();
    }

您可以根据需要访问的内容将HttpGet更改为HttpPost / HttpPut / HttpDelete.

干杯.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...