我如何在Android“本地版”中获得这个?
与浏览器中的以下URL类似,我将图像附加到更好的站立状态
如何使用UserName和密码身份验证从Android中的以下URL获取响应
app.php?code=com.eboundservices.pakistantv
用户名: hashapp
PassWord: PlayFair00
单击Login后,在浏览器中显示如下字符串。
c2VydmVyX3RpbWU9MTAvMTEvMjAxNCAyOjU2OjU3IFBNJmhhc2hfdmFsdWU9R3liN29aK2xQZW94UnhXbjZCaTVxZz09JnZhbGlkbWludXRlcz0yJmlkPTE=
我想在Android的“本地人”里找到这个
发布于 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);}
发布于 2014-10-12 04:05:28
您将使用http身份验证来向网站提供用户名/密码,首先,屏幕快照中显示的神秘字符串是身份验证令牌。一旦您通过身份验证,您将发送用户名/密码/auth。到服务器的http标头中的令牌。请注意,我将字符串常量单独保存在一个名为K的罚款中,这些常量的名称非常具有描述性,需要引入适当的值。
私有布尔身份验证(){
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服务一起使用。
https://stackoverflow.com/questions/26316161
复制相似问题