卷曲的android [英] CURL in android

查看:191
本文介绍了卷曲的android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在寻找通过不同的博客,网站和堆栈溢出我的回答。我有一个应用程序,这股影像与服务器。它们提供了API令牌的认证,并且认证是使用卷曲。任何一个可以告诉我,我怎么能在我的应用程序使用卷曲。我要通过URL作为 API令牌+密码+ 以相同的形式获得认证的路径。任何一个可以建议一些技巧来完成它?

在此先感谢

编码快乐


修改

code

 公共静态字符串调用getRequest(){
        StringBuffer的StringBuffer的=新的StringBuffer();
        BufferedReader中的BufferedReader = NULL;
        尝试 {
            HttpClient的HttpClient的=新DefaultHttpClient();
            HTTPGET HTTPGET =新HTTPGET();

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

            httpGet.setHeader(内容类型,应用程序/ XML);
            HTT presponse HTT presponse = httpClient.execute(HTTPGET);
 

这是从服务器日志猫响应( logcat的输出

  9月5号至5日:34:29.180:信息/国际(7283):加载时区EN_US在7701ms名。
9月5号至5日:34:29.230:DEBUG / dalvikvm(7283):GC_CONCURRENT释放376K,50%的自由3080K / 6087K,外部1357K / 1828K,暂停为6ms + 6ms的
9月5号至5日:34:30.750:DEBUG / dalvikvm(7283):GC_CONCURRENT释放687K,52%免费3059K / 6343K,外部1357K / 1828K,暂停7毫秒+ 6ms的
9月5号至5日:34:31.470:DEBUG / dalvikvm(297):GC_EXPLICIT释放10K,55%免费2589K / 5703K,外部只有716K / 1038K,暂停115ms
9月5号至5日:34:31.851:信息/服务器的反响(7283):< D​​OCTYPE HTML PUBLIC -  // W3C // DTD XHTML 1.0过渡// EN
9月5号至5日:34:31.851:信息/服务器的反响(7283):http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,HTML的xmlns =htt​​p://www.w3.org/1999/xhtmlXML:LANG =ENLANG =EN&GT ;
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; HEAD>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,META HTTP-当量=内容类型内容=text / html的;字符集= UTF-8/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,META NAME =机器人内容=加入noindex,nofollow的/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,标题>营火:登录< /标题>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,链接HREF =?/样式/ screen.css 1304413304媒体=所有相对=样式类型=文本/ CSS/ >
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,链接HREF =?/样式/背包款式换login.css 1304413304媒体=所有相对=样式类型= 文本/ CSS/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,脚本的src =/ sprockets.js 1304413286?类型=文/ JavaScript的>< / SCRIPT>
9月5号至5日:34:31.851:信息/服务器的反响(7283):
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,META NAME =queenbee-IDCONTENT =1515015/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,META NAME =返回到位置的CONTENT =/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,/头>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,体类=模式登陆>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV ID =容器>
9月5号至5日:34:31.851:信息/服务器的反响(7283):
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV ID =莫代尔>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV CLASS =内与GT;
9月5号至5日:34:31.851:信息/服务器的反响(7283):
9月5号至5日:34:31.851:信息/服务器的反响(7283):
9月5号至5日:34:31.851:信息/服务器的反响(7283):
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,A HREF =htt​​p://www.campfirenow.com级=logo_link>< IMG ALT =营火标志的高度=98ID =标志SRC =/图片/ logo.png 1304413304?WIDTH =96/>< / A>
9月5号至5日:34:31.851:信息/服务器的反响(7283):
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV ID =login_dialog级=login_dialog>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,形式的行动=htt​​ps://launchpad.37signals.com/authenticate方法=后>< D​​IV的风格=保证金: 0;填充:0;显示:内联><输入名称=authenticity_token类型=隐藏值=QKfiIN4bccN8ch86vb6mcDneEec + B9iYp2 / 3AewQLs4 =/>< / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,输入ID =产品NAME =品字型=隐藏值=篝火/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,输入ID =子域NAME =子域类型=隐藏值=S1/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV ID =user_name_login>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,H2>用户名和LT; / H>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中;输入autocapitalize =关闭自动更正=关闭的id =username的名称=username的类型=文本/>&其中; BR />
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,H2>密码< / H>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,输入ID =密码NAME =密码类型=密码/>< BR />
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中;标签><输入类=自动ID =remember_meNAME =remember_me类型=复选框值=1/ >
9月5号至5日:34:31.851:信息/服务器的反响(7283):记住我这台电脑上
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; /标签>< BR />
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,输入级=按钮NAME =提交类型=提交值=登录/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV CLASS =临时演员>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,UL>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,立GT;<强>说明:其中; / STRONG> < A HREF =htt​​ps://s1.campfirenow.com/forgot_password>我忘记了用户名或密码< / A>< /李>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,立GT;< A HREF =#的onclick =Login.loginWithOpenId();返回false;>登录使用OpenID的,而不是&LT ; / A>< /李>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / UL>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV ID =open_id_login的风格=显示:无>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,H2>< IMG SRC =/图片/ OpenID的logo.pngALT =拍在与一个OpenID/>< / H2>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中;输入autocapitalize =关闭自动更正=关闭的id =openid_identifier名称=openid_identifier类型=文本/>&其中; BR />
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中;标签><输入类=自动ID =remember_meNAME =remember_me类型=复选框值=1/ >
9月5号至5日:34:31.851:信息/服务器的反响(7283):记住我这台电脑上
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; /标签>< BR />
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,输入级=按钮NAME =提交类型=提交值=登录/>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,DIV CLASS =临时演员>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,UL>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,立GT;<强>说明:其中; / STRONG> < A HREF =/认证/ open_id_alternative>我的OpenID不工作,我不能登录< / A>< /李>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,立GT;< A HREF =#的onclick =Login.loginWithUserName();返回false;>登录使用标准的用户名/密码< / A>< /李>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / UL>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,/形式GT;
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,脚本类型=文/ JavaScript的>
9月5号至5日:34:31.851:信息/服务器的反响(7283)://< [CDATA [!
9月5号至5日:34:31.851:信息/服务器的反响(7283):Login.loginWithUserName({动画:虚假})
9月5号至5日:34:31.851:信息/服务器的反响(7283)://]]>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / SCRIPT>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / DIV>
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中,/身体GT;
9月5号至5日:34:31.851:信息/服务器的反响(7283):其中; / HTML>
9月5号至5日:34:31.921:DEBUG / dalvikvm(7283):GC_CONCURRENT释放479K,51%免费3158K / 6343K,外部1357K / 1828K,暂停为6ms + 9ms的
 

解决方案

让我们假设你想要做以下请求:

 卷曲-u用户名:密码http://sample.campfirenow.com/rooms.xml
 

在Android中,你会做如下。

 公共静态字符串调用getRequest(){
        StringBuffer的StringBuffer的=新的StringBuffer();
        BufferedReader中的BufferedReader = NULL;
        尝试 {
            HttpClient的HttpClient的=新DefaultHttpClient();
            HTTPGET HTTPGET =新HTTPGET();

            URI URI =新的URI(http://sample.campfirenow.com/rooms.xml);
            httpGet.setURI(URI);
            httpGet.addHeader(BasicScheme.authenticate(
                    新UsernamePasswordCredentials(用户,密码),
                    HTTP.UTF_8,FALSE));

            HTT presponse HTT presponse = httpClient.execute(HTTPGET);
            InputStream中的InputStream = HTT presponse.getEntity()的getContent()。
            的BufferedReader =新的BufferedReader(新的InputStreamReader(
                    为InputStream));

            串的readLine = bufferedReader.readLine();
            而(的readLine!= NULL){
                的StringBuffer.append(的readLine);
                的StringBuffer.append(\ N);
                的readLine = bufferedReader.readLine();
            }
        }赶上(例外五){
            // TODO:处理异常
        } 最后 {
            如果(的BufferedReader!= NULL){
                尝试 {
                    bufferedReader.close();
                }赶上(IOException异常E){
                    // TODO:处理异常
                }
            }
        }
        返回stringBuffer.toString();
    }
 

您可以更改HTTPGET到HttpPost / HttpPut / HttpDelete这取决于你所需要的访问权限。

干杯。

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

解决方案

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.

这篇关于卷曲的android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆