GoogleAuthSub.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:5k
源码类别:

android开发

开发平台:

Java

  1. package irdc.EX09_01;
  2. import java.io.BufferedReader; 
  3. import java.io.BufferedWriter; 
  4. import java.io.FileWriter; 
  5. import java.io.IOException; 
  6. import java.io.InputStream; 
  7. import java.io.InputStreamReader; 
  8. import java.io.UnsupportedEncodingException; 
  9. import java.util.ArrayList; 
  10. import java.util.List; 
  11. import org.apache.http.Header; 
  12. import org.apache.http.HttpResponse; 
  13. import org.apache.http.NameValuePair; 
  14. import org.apache.http.client.ClientProtocolException; 
  15. import org.apache.http.client.entity.UrlEncodedFormEntity; 
  16. import org.apache.http.client.methods.HttpGet; 
  17. import org.apache.http.client.methods.HttpPost; 
  18. import org.apache.http.impl.client.DefaultHttpClient; 
  19. import org.apache.http.message.BasicHeader; 
  20. import org.apache.http.message.BasicNameValuePair; 
  21. import org.apache.http.protocol.HTTP; 
  22. import android.util.Log; 
  23. public class GoogleAuthSub 
  24.   /*声明变量*/
  25.   private DefaultHttpClient httpclient; 
  26.   private HttpPost httpost; 
  27.   private HttpResponse response; 
  28.   private String strGoogleAccount; 
  29.   private String strGooglePassword; 
  30.   private String TAG = "IRDC_DEBUG"; 
  31.   
  32.   /*GoogleAuthSub对象的构造器*/
  33.   public GoogleAuthSub(String strUID, String strPWD) 
  34.   { 
  35.     this.strGoogleAccount = strUID; 
  36.     this.strGooglePassword = strPWD; 
  37.     httpclient = new DefaultHttpClient(); 
  38.     httpost = new HttpPost("https://www.google.com/accounts/ClientLogin"); 
  39.   } 
  40.   
  41.   /*取得Google Token方法*/
  42.   public String getAuthSubToken() 
  43.   { 
  44.     /*创建Name Value Pair字符串*/
  45.     List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
  46.     nvps.add(new BasicNameValuePair("Email", this.strGoogleAccount)); 
  47.     nvps.add(new BasicNameValuePair("Passwd", this.strGooglePassword)); 
  48.     nvps.add(new BasicNameValuePair("source", "MyApiV1")); 
  49.     nvps.add(new BasicNameValuePair("service", "cl")); 
  50.     String GoogleLoginAuth=""; 
  51.     try 
  52.     { 
  53.       /*创建Http Post连接*/
  54.       httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.DEFAULT_CONTENT_CHARSET)); 
  55.       response = httpclient.execute(httpost); 
  56.       if( response.getStatusLine().getStatusCode()!=200 ) 
  57.       { 
  58.         return ""; 
  59.       } 
  60.       /*取回Google Token*/
  61.       InputStream is = response.getEntity().getContent(); 
  62.       GoogleLoginAuth = getAuth(is); 
  63.       
  64.       
  65.       /*模拟HTTP Header*/ 
  66.       Header[] headers = new BasicHeader[6]; 
  67.       headers[0] = new BasicHeader("Content-type", "application/x-www-form-urlencoded");  
  68.       headers[1] = new BasicHeader("Authorization", "GoogleLogin auth=""+GoogleLoginAuth+"""); 
  69.       headers[2] = new BasicHeader("User-Agent", "Java/1.5.0_06"); 
  70.       headers[3] = new BasicHeader("Accept", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"); 
  71.       headers[4] = new BasicHeader("Connection", "keep-alive"); 
  72.       /*发出Http Get请求登录Google Calendar服务作范例*/
  73.       HttpGet httpget; 
  74.       String feedUrl2 = "http://www.google.com/calendar/feeds/default/allcalendars/full"; 
  75.       httpget = new HttpGet(feedUrl2); 
  76.       httpget.addHeader(headers[0]); 
  77.       httpget.addHeader(headers[1]); 
  78.       httpget.addHeader(headers[2]); 
  79.       httpget.addHeader(headers[3]); 
  80.       httpget.addHeader(headers[4]); 
  81.       /*取得Google Calendar服务应答*/
  82.       response = httpclient.execute(httpget); 
  83.       String strTemp01 = convertStreamToString(response.getEntity().getContent()); 
  84.       Log.i(TAG, strTemp01); 
  85.       /*指定暂存盘位置*/ 
  86.       String strEarthLog = "/sdcard/googleauth.log"; 
  87.       BufferedWriter bw; 
  88.       bw = new BufferedWriter (new FileWriter(strEarthLog)); 
  89.       /*将取回文件写入暂存盘中*/
  90.       bw.write( strTemp01, 0, strTemp01.length() ); 
  91.       bw.flush(); 
  92.        
  93.     } 
  94.     catch (UnsupportedEncodingException e) 
  95.     { 
  96.       e.printStackTrace(); 
  97.     } 
  98.     catch (ClientProtocolException e) 
  99.     { 
  100.       e.printStackTrace(); 
  101.     } 
  102.     catch (IOException e) 
  103.     { 
  104.       e.printStackTrace(); 
  105.     } 
  106.     catch(Exception e) 
  107.     { 
  108.       e.printStackTrace(); 
  109.     } 
  110.     return GoogleLoginAuth; 
  111.   } 
  112.   /*自定义读取token内容的方法*/
  113.   public String getAuth(InputStream is) 
  114.   { 
  115.     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
  116.     String line = null; 
  117.     String strAuth=""; 
  118.     try 
  119.     { 
  120.       while ((line = reader.readLine()) != null) 
  121.       { 
  122.         Log.d(TAG, ": "+line); 
  123.         if( line.startsWith("Auth=")) 
  124.         { 
  125.           strAuth=line.substring(5); 
  126.           Log.i("auth",": "+strAuth); 
  127.         } 
  128.       } 
  129.     } 
  130.     catch (IOException e) 
  131.     { 
  132.       e.printStackTrace(); 
  133.     } 
  134.     finally 
  135.     { 
  136.       try 
  137.       { 
  138.         is.close(); 
  139.       } 
  140.       catch (IOException e) 
  141.       { 
  142.         e.printStackTrace(); 
  143.       } 
  144.     } 
  145.     return strAuth; 
  146.   } 
  147.   /*将数据转为字符串方法*/
  148.   public String convertStreamToString(InputStream is) 
  149.   { 
  150.     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
  151.     StringBuilder sb = new StringBuilder(); 
  152.     String line = null; 
  153.     try 
  154.     { 
  155.       while ((line = reader.readLine()) != null) 
  156.       { 
  157.         sb.append(line); 
  158.       } 
  159.     } 
  160.     catch (IOException e) 
  161.     { 
  162.       e.printStackTrace(); 
  163.     } 
  164.     finally 
  165.     { 
  166.       try 
  167.       { 
  168.         is.close(); 
  169.       } 
  170.       catch (IOException e) 
  171.       { 
  172.         e.printStackTrace(); 
  173.       } 
  174.     } 
  175.     return sb.toString(); 
  176.   }