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

android开发

开发平台:

Java

  1. package irdc.ex08_16;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.apache.http.HttpEntity;
  5. import org.apache.http.HttpResponse;
  6. import org.apache.http.NameValuePair;
  7. import org.apache.http.client.entity.UrlEncodedFormEntity;
  8. import org.apache.http.client.methods.HttpPost;
  9. import org.apache.http.cookie.Cookie;
  10. import org.apache.http.impl.client.DefaultHttpClient;
  11. import org.apache.http.message.BasicNameValuePair;
  12. import org.apache.http.protocol.HTTP;
  13. import org.apache.http.util.EntityUtils;
  14. import android.app.Activity;
  15. import android.app.AlertDialog;
  16. import android.content.DialogInterface;
  17. import android.content.Intent;
  18. import android.os.Bundle;
  19. import android.text.method.NumberKeyListener;
  20. import android.util.DisplayMetrics;
  21. import android.util.Log;
  22. import android.view.LayoutInflater;
  23. import android.view.View;
  24. import android.widget.AbsoluteLayout;
  25. import android.widget.EditText;
  26. import android.widget.TextView;
  27. public class EX08_16 extends Activity
  28. {
  29.   private TextView mTextView01;
  30.   private LayoutInflater mInflater01;
  31.   private View mView01;
  32.   private EditText mEditText01,mEditText02;
  33.   private String TAG = "HTTP_DEBUG";
  34.   /* 中文?的间距 */
  35.   private int intShiftPadding = 14;
  36.   
  37.   /** Called when the activity is first created. */
  38.   @Override
  39.   public void onCreate(Bundle savedInstanceState)
  40.   {
  41.     super.onCreate(savedInstanceState);
  42.     setContentView(R.layout.main);
  43.     
  44.     /* 建立DisplayMetrics对象,取得屏幕分辨率 */
  45.     DisplayMetrics dm = new DisplayMetrics(); 
  46.     getWindowManager().getDefaultDisplay().getMetrics(dm);
  47.     
  48.     mTextView01 = (TextView)findViewById(R.id.myTextView1);
  49.     
  50.     /* 将文?Label放?屏幕?勺方 */
  51.     mTextView01.setLayoutParams
  52.     (
  53.       new AbsoluteLayout.LayoutParams(intShiftPadding*mTextView01.getText().toString().length(),18,(dm.widthPixels-(intShiftPadding*mTextView01.getText().toString().length()))-10,0)
  54.     );
  55.     
  56.     /* 使User点选TextView文?的事件处理 */
  57.     mTextView01.setOnClickListener(new TextView.OnClickListener()
  58.     {
  59.       @Override
  60.       public void onClick(View v)
  61.       {
  62.         // TODO Auto-generated method stub
  63.         
  64.         /* 显示登丈对话框 */
  65.         showLoginForm();
  66.       }
  67.     });
  68.   }
  69.   
  70.   /* 告订登丈对话框函数 */
  71.   private void showLoginForm()
  72.   {
  73.     try
  74.     {
  75.       /* 北LayoutInflater取得加Activity的context */
  76.       mInflater01 = LayoutInflater.from(EX08_16.this);
  77.       /* 设定建立的View所要使用的Layout Resource */
  78.       mView01 = mInflater01.inflate(R.layout.login, null);
  79.       
  80.       /* 账号EditText */
  81.       mEditText01 = (EditText) mView01.findViewById(R.id.myEditText1);
  82.       
  83.       /* 密码EditText */
  84.       mEditText02 = (EditText) mView01.findViewById(R.id.myEditText2);
  85.       
  86.       /* 延含学习,使EditText仅接受数? */
  87.       /* import android.text.method.NumberKeyListener; */
  88.       mEditText02.setKeyListener(new NumberKeyListener()
  89.       {
  90.         @Override
  91.         protected char[] getAcceptedChars()
  92.         {
  93.           char[] numberChars = {'1','2','3','4','5','6','7','8','9','0','.'};
  94.           return numberChars;
  95.         }
  96.       });
  97.       
  98.       /* 建立Login窗体对话框 */
  99.       new AlertDialog.Builder(this)
  100.       .setView(mView01)
  101.       .setPositiveButton("OK",
  102.       new DialogInterface.OnClickListener()
  103.       {
  104.         /* 当User按兀「OK」时进行登丈网络囫业 */
  105.         public void onClick(DialogInterface dialog, int whichButton)
  106.         {
  107.           /* 呼?告订processInternetLogin函数登丈 */
  108.           if(processInternetLogin(mEditText01.getText().toString(), mEditText02.getText().toString()))
  109.           {
  110.             /* 若登丈成叫,则结束否Activity跳吹登丈完成 */
  111.             Intent i = new Intent();
  112.             i.setClass(EX08_16.this, EX08_16_02.class);
  113.             startActivity(i);
  114.             finish();
  115.           }
  116.         }
  117.       }).show();
  118.     }
  119.     catch(Exception e)
  120.     {
  121.       e.printStackTrace();
  122.     }
  123.   }
  124.   
  125.   /* 告订登丈网站URL Login囫业 */
  126.   private boolean processInternetLogin(String strUID, String strUPW)
  127.   {
  128.     /* Demo登丈,留意己弋写不她 */
  129.     /* 账号:david */
  130.     /* 密码:1234 */
  131.     String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/TestLogin/index.php";
  132.     String strRet = "";
  133.     
  134.     try
  135.     {
  136.       DefaultHttpClient httpclient = new DefaultHttpClient();
  137.       HttpResponse response;
  138.       HttpPost httpost = new HttpPost(uriAPI);
  139.       List <NameValuePair> nvps = new ArrayList <NameValuePair>();
  140.       nvps.add(new BasicNameValuePair("uid", strUID)); 
  141.       nvps.add(new BasicNameValuePair("upw", strUPW)); 
  142.       
  143.       httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
  144.       
  145.       response = httpclient.execute(httpost);
  146.       HttpEntity entity = response.getEntity();
  147.       //entity = response.getEntity();
  148.       
  149.       Log.d(TAG, "HTTP POST getStatusLine: " + response.getStatusLine());
  150.       
  151.       /* HTML POST response BODY */
  152.       strRet = EntityUtils.toString(entity);
  153.       Log.i(TAG, strRet);
  154.       strRet = strRet.trim().toLowerCase();
  155.       
  156.       List<Cookie> cookies = httpclient.getCookieStore().getCookies();
  157.       if (entity != null)
  158.       {
  159.         entity.consumeContent();
  160.       }
  161.       
  162.       Log.d(TAG, "HTTP POST Initialize of cookies."); 
  163.       cookies = httpclient.getCookieStore().getCookies(); 
  164.       if (cookies.isEmpty())
  165.       {
  166.         Log.d(TAG, "HTTP POST Cookie not found.");
  167.         Log.i(TAG, entity.toString());
  168.       }
  169.       else
  170.       {
  171.         for (int i = 0; i < cookies.size(); i++)
  172.         {
  173.           Log.d(TAG, "HTTP POST Found Cookie: " + cookies.get(i).toString()); 
  174.         } 
  175.       }
  176.       
  177.       
  178.       if(strRet.equals("y"))
  179.       {
  180.         Log.i("TEST", "YES");
  181.         return true;
  182.       }
  183.       else
  184.       {
  185.         Log.i("TEST", "NO");
  186.         return false;
  187.       }
  188.     }
  189.     catch(Exception e)
  190.     {
  191.       e.printStackTrace();
  192.       return false;
  193.     }
  194.   }
  195. }