首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用身份验证UserName和密码从Web获取响应的方式

使用身份验证UserName和密码从Web获取响应的方式
EN

Stack Overflow用户
提问于 2014-10-11 15:20:47
回答 2查看 223关注 0票数 1

我如何在Android“本地版”中获得这个?

与浏览器中的以下URL类似,我将图像附加到更好的站立状态

如何使用UserName和密码身份验证从Android中的以下URL获取响应

app.php?code=com.eboundservices.pakistantv

用户名: hashapp

PassWord: PlayFair00

单击Login后,在浏览器中显示如下字符串。

c2VydmVyX3RpbWU9MTAvMTEvMjAxNCAyOjU2OjU3IFBNJmhhc2hfdmFsdWU9R3liN29aK2xQZW94UnhXbjZCaTVxZz09JnZhbGlkbWludXRlcz0yJmlkPTE=

我想在Android的“本地人”里找到这个

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-25 05:59:14

添加权限 布局} TokenListener类 包装com.rashid.token; 公共接口TokenListener { 公共无效onTaskCompleteString(int,String ); } WebServiceToken类 包装com.rashid.token; 进口org.apache.http.auth.UsernamePasswordCredentials;;进口org.apache.http.HttpEntity;进口org.apache.http.HttpResponse;进口org.apache.http.auth.AuthScope;进口org.apache.http.auth.AuthScope;进口org.apache.http.client.methods.HttpPost;进口org.apache.http.HttpEntity进口org.apache.http.util.EntityUtils; 进口android.app.ProgressDialog;进口android.content.Context;进口android.os.AsyncTask; 公共类WebServiceToken扩展AsyncTask { 私有ProgressDialog pdia; 私有上下文上下文;TokenListener tokenInterface; 字符串用户名= "hashapp";字符串密码= "PlayFair00";字符串url = "app.php?code=com.eboundservices.pakistantv"; 公共WebServiceToken(上下文){ // TODO自动生成的构造函数存根 tokenInterface = (TokenListener)上下文;this.context =上下文; } @重写受保护的无效onPreExecute() { super.onPreExecute(); pdia =新的ProgressDialog(上下文);pdia.setCancelable(false);pdia.setMessage(“请等待.”);pdia.show(); } @重写受保护的字符串doInBackground(字符串.arg) { 字符串xml = null;尝试{ DefaultHttpClient httpClient =新DefaultHttpClient();HttpPost httpPost =新HttpPost(url);HttpPost新UsernamePasswordCredentials(用户名、密码); HttpResponse httpResponse = httpClient.execute(httpPost);HttpEntity httpEntity = httpResponse.getEntity();xml = EntityUtils.toString(httpEntity);} catch (异常e) { e.printStackTrace();}返回xml; } @覆盖受保护的无效onPostExecute(字符串结果){super.onPostExecute(结果); pdia.dismiss();if (结果!= null) { tokenInterface.onTaskCompleteString(1,结果);} tokenInterface.onTaskCompleteString(2,"");} } } MainActivity类 包装com.rashid.token; 进口android.app.Activity;进口android.os.Bundle;进口android.view.Menu;进口android.widget.TextView; 公共类MainActivity扩展活动实现TokenListener { TextView tokenTextView; @重载受保护的void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initializeUI();callWebService();} /** *此方法用于初始化UI组件*/私有void (){ // TODO自动生成的方法存根tokenTextView =(TextView) findViewById(R.id.textView_token);} /** *这里我调用callWebService */私有void (){ // TODO自动生成的方法存根尝试{//=>调用/**服务这里<=/ InternetConnection connection;connection =新InternetConnection(MainActivity.this);if (connection.hasConnection()) { new WebServiceToken(MainActivity.this).execute();} connection.showToast(MainActivity.this);} // =>结束服务<=/} catch (异常e) {// TODO:处理异常e.printStackTrace();}} /** *在这里,响应令牌设置为TextView */ @重写公共空onTaskCompleteString(int,String ){ // TODO自动生成的方法存根tokenTextView.setText( str);}

票数 1
EN

Stack Overflow用户

发布于 2014-10-12 04:05:28

您将使用http身份验证来向网站提供用户名/密码,首先,屏幕快照中显示的神秘字符串是身份验证令牌。一旦您通过身份验证,您将发送用户名/密码/auth。到服务器的http标头中的令牌。请注意,我将字符串常量单独保存在一个名为K的罚款中,这些常量的名称非常具有描述性,需要引入适当的值。

私有布尔身份验证(){

代码语言:javascript
运行
复制
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(K.URL_AUTHENTICATE);
String strAuthToken = "";
// Request parameters and other properties.

try{
    httpPost.setHeader(K.HEAD_AUTHORIZATION, K.STR_BASIC);
    httpPost.setHeader(K.HEAD_USERNAME, K.STR_NAEEM);
    httpPost.setHeader(K.HEAD_PASS, K.STR_SECRET);          
}catch(Exception exc){
    exc.printStackTrace();
    return (mbIsAuthenticated = false);
}

/*
 * Making HTTP Request
 */
try {
    Log.i(K.LOGSERV, "Sending auth. request to server.");
    HttpResponse response = httpClient.execute(httpPost);
    HttpEntity respEntity = response.getEntity();

    if (respEntity != null) {
        String content =  EntityUtils.toString(respEntity);
        Log.d(K.LOGSERV, content);

        JSONObject jobject = null;
        JSONArray jfinalData = null;
        JSONObject jrow = null;

        jobject = (JSONObject) new JSONTokener(content).nextValue();
        strAuthToken = jobject.getString("auth_token");

        if(strAuthToken.length() > 0){
            Shared.getInstance().getDB(this).updateGeneralSetting(BSRDB.SETTING_AUTH_TOKEN, strAuthToken);
            mbIsAuthenticated = true;
        }               
    }
} catch (ClientProtocolException e) {
    // writing exception to log
    e.printStackTrace();
    mbIsAuthenticated = false;
} catch (IOException e) {
    // writing exception to log
    e.printStackTrace();
    mbIsAuthenticated = false;
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    mbIsAuthenticated = false;
}
return mbIsAuthenticated;

}

上面的代码与一个托管在亚马逊S2云上的web服务一起使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26316161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档