Google用户登录界面 Android实现
实验效果:
项目目录:
Java代码(放在Src文件下)
package com.bn.chap9.login;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Sample9_1_Activity extends Activity {
EditText user;//用户名
EditText password;//密码
Button bOK;//确定按钮
Button bClear;//清空按钮
TextView tv;
DefaultHttpClient client;
HttpPost httpPost;
HttpResponse response;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
client=new DefaultHttpClient();
httpPost=new HttpPost("https://www.google.com/accounts/ClientLogin");
user=(EditText)this.findViewById(R.id.EditText01);
password=(EditText)this.findViewById(R.id.EditText02);
bOK=(Button)this.findViewById(R.id.Button01);
bClear=(Button)this.findViewById(R.id.Button02);
tv=(TextView)this.findViewById(R.id.TextView03);
bClear.setOnClickListener
(
new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
user.setText("");
password.setText("");
}
}
);
bOK.setOnClickListener(
new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String userName=user.getText().toString().trim();
System.out.println("用户姓名是:"+userName);
String pwd=password.getText().toString().trim();
System.out.println("用户密码是:"+pwd);
if(userName.length()==0)
{
Toast.makeText(
Sample9_1_Activity.this,
"请输入用户名!",
Toast.LENGTH_SHORT).show();
}else if(pwd.length()==0)
{
Toast.makeText(
Sample9_1_Activity.this,
"请输入密码!",
Toast.LENGTH_SHORT).show();
}
else
{
String result=getToken(userName,pwd);
System.out.println("返回结果是:"+result);
if(result.length()!=0)
{
Toast.makeText(
Sample9_1_Activity.this,
"恭喜您,成功获取Token!",
Toast.LENGTH_SHORT).show();
tv.setText("获取的Token为:"+result);
Header[] header=new BasicHeader[5];//创建Header对象
header[0]=new BasicHeader("Content-type","application/x-www-form-urlencoded");
header[1]=new BasicHeader("Authorzation","GoogleLogin auth=\""+result+"\"");
header[2]=new BasicHeader("User-Agent","Java/1.5.0_06");
header[3]=new BasicHeader("Accept","text/html,image/gif,image/jpeg,*;q=2,*/*;q=.2");
header[4]=new BasicHeader("Connection","keep-alive");
//用于发送HttpGet请求
String url="http://www.google.com/ig?hl=zh-CN&refresh=1";//网页地址
HttpGet get=new HttpGet(url);
for(int i=0;i<header.length;i++)
{
get.addHeader(header[i]);
}
try {
response=client.execute(get);
InputStream tempIs=response.getEntity().getContent();
BufferedReader read=new BufferedReader(new InputStreamReader(tempIs));
StringBuffer sb=new StringBuffer();
String tempStr=null;
try
{
while((tempStr=read.readLine())!=null)
{
sb.append(tempStr);
}
}catch(Exception e)
{
e.printStackTrace();
}finally
{
try
{
tempIs.close();//关闭输入流
}catch(Exception e)
{
e.printStackTrace();
}
}
tempStr=sb.toString().trim();
System.out.println("tempStr的结果:"+tempStr);
BufferedWriter bw=new BufferedWriter(new FileWriter("/sdcard/user.txt"));
bw.write(tempStr,0,tempStr.length());
bw.flush();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else
{
Toast.makeText(
Sample9_1_Activity.this,
"很遗憾,未能获取Token,请检查账号和密码是否正确!",
Toast.LENGTH_SHORT).show();
tv.setText("未能获取Token!");
}
}
}
}
);
}
public String getToken(String name,String pwd)
{
String result=null;
List<NameValuePair> list=new ArrayList<NameValuePair>();//创建NameValurPair字符串
list.add(new BasicNameValuePair("Email",name));//添加账号
list.add(new BasicNameValuePair("Passwd",pwd));//添加密码
list.add(new BasicNameValuePair("source","clientstr"));
list.add(new BasicNameValuePair("service","reader"));
try
{
httpPost.setEntity(
new UrlEncodedFormEntity(
list,
HTTP.DEFAULT_CONTENT_CHARSET));
response=client.execute(httpPost);
if(response.getStatusLine().getStatusCode()!=200)
{
return "";
}
InputStream is=response.getEntity().getContent();
result=getAuth(is);//获取信息
}catch(Exception e)
{
e.printStackTrace();
}
return result;
}
public String getAuth(InputStream is)
{//分离Token的方法
String result=null;
String line=null;
BufferedReader read=new BufferedReader(
new InputStreamReader(is));//创建BufferedReader对象
try
{
while((line=read.readLine())!=null)//读取信息
{
if(line.startsWith("Auth="))
{
result=line.substring(5);//截取字符串
}
}
}catch(Exception e)
{
e.printStackTrace();
}finally
{
try
{
is.close();//关闭输入流
}catch(Exception e)
{
e.printStackTrace();
}
}
return result;
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffcc">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Google用户登录系统"
android:textColor="#222222"
android:textSize="18dip"
/>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffcc66">
<TextView
android:text="用户名:"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#222222"
android:textSize="18dip">
</TextView>
<EditText
android:text=""
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dip">
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffcc66">
<TextView
android:text="密 码:"
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#222222"
android:textSize="18dip">
</TextView>
<EditText
android:text=""
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dip"
android:password="true">
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffcc66">
<Button
android:text="登录"
android:id="@+id/Button01"
android:layout_width="75dip"
android:layout_height="40dip"
android:textSize="18dip"
android:gravity="center">
</Button>
<Button
android:text="清空"
android:id="@+id/Button02"
android:layout_width="75dip"
android:layout_height="40dip"
android:textSize="18dip"
android:gravity="center">
</Button>
</LinearLayout>
<TextView
android:text=""
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#222222"
android:textSize="18dip">
</TextView>
</LinearLayout>
Google用户登录界面 Android实现的更多相关文章
- Android studio 开发一个用户登录界面
Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...
- jQuery和CSS3炫酷GOOGLE样式的用户登录界面
这是一款使用jQuery和CSS3打造的GOOGLE样式的用户登录界面特效.该登录界面特效中,右上角的小问号和错误提示小图标使用SVG来制作.username和password输入框採用浮动标签特效. ...
- 很漂亮的用户登录界面HTML模板
效果预览:http://keleyi.com/keleyi/phtml/divcss/21.htm HoverTree开源项目实现了分层后,准备实现管理员后台登录,这里先把登录界面的HTML模板整理好 ...
- 美化VC界面(用户登录界面)
源代码:下载 VC开发程序单调的界面相信大家都是深有感触,提到界面美化编程,人们都会说做界面不要用VC写,太难了.一句俗语:难者不会,会者不难.VC的美化界面编程并没有人们想像的那么难.这篇文章是我写 ...
- html简约风用户登录界面网页制作html5-css-jquary-学习模版
2018--12-12 喜迎双十二,咳咳,,,,我不是打广告哈,购物的节日也不要忘记学习. 大家好,我又来了. 今天抽出来空把自己的学习心得给大家分享,这是一个可开发可扩展的用户登录界面,用于开发学习 ...
- 编写Java程序,使用Swing布局管理器与常用控件,实现用户登录界面
返回本章节 返回作业目录 需求说明: 使用Swing布局管理器与常用控件,实现用户登录界面 实现思路: 创建用户登录界面的类LoginFrame,在该类中创建无参数的构造方法,在构造方法中,设置窗体大 ...
- java web用户登录界面
做这次实验,主要用到了mysql java web 的 内容 实验代码: IUserDao.java package com.jaovo.msg.dao; import java.util.List ...
- Qt 用户登录界面
使用QT创建自己的登录窗口: 主要步骤: 1.窗口界面的绘制 2.沟通数据库进行密码验证 void MainWindow::on_pushButton_clicked() { // 连 ...
- 记一次自启动的docker容器将宿主机的开机用户登录界面覆盖事件
宿主机的系统为CentOS7_7.7.1908,默认为GUI启动,安装了宝塔面板,docker-ce为最新版. 在启动了一个centos7的容器(镜像为centos官方镜像)后,将该容器重启策略设置为 ...
随机推荐
- BZOJ 3408: [Usaco2009 Oct]Heat Wave 热浪( 最短路 )
普通的最短路...dijkstra水过.. ------------------------------------------------------------------------------ ...
- IOS7修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色
解决方法 1: 自从IOS7后UINavigationBar的一些属性的行为发生了变化.你可以在下图看到: 现在,如果你要修改它们的颜色,用下面的代码: 1 2 3 4 self.navigation ...
- FreePascal的VMT与Delphi不一致,没有负方向
因为不需要与C++兼容嘛:http://www.freepascal.org/docs-html/prog/progsu168.html 如果要想取得它真正的VMT,可以Pointer强行转换+100 ...
- 什么是TimeTunnel
index - Taocode 欢迎使用TimeTunnel PageOutline(1-3,,inline) 什么是TimeTunnel !TimeTunnel(简称TT)是一个基于thrift通讯 ...
- KVM客户机使用主机USB设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devn ...
- pomelo 协议
分析的是hybridconnector,使用的chatofpomelo-websocket(pomelo为0.7.0) 參考:https://github.com/NetEase/pomelo/wik ...
- ListView中加入Button后,Button的点击事件和ListView的点击事件冲突
1.在ItemView配置的xml文件里的根节点加入属性android:descendantFocusability="blocksDescendants" 2.在要加入事件的控件 ...
- Axis2(7):将Spring的装配JavaBean发布成WebService
在现今的Web应用中经常使用Spring框架来装载JavaBean.如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的 ...
- [转]VMware 出现下述错误: Application failure. hr=0x80040101:Failed to initialize virtual machine.
VMware 出现下述错误:Application failure. hr=0x80040101:Failed to initialize virtual machine. 解决方法:1.重新注册这三 ...
- 08-UIKit(UITableTableViewCell、自定义Cell、xcode调试)
目录: 1. UITableTableViewCell 2. tag技术 3. 自定义Cell 4. 用nib文件构造自定义的静态表 5. TableView数据模型总结 6. Xcode代码调试 & ...