0

我是android应用程序的新手。我做了一个登录页面,只有网站上已经注册的用户才能登录。当用户输入他的用户名和密码时,我想对注册用户进行身份验证。如何验证用户名和密码。我正在使用以下代码,请查看并帮助我。单击登录按钮时,会显示一些错误。

主.java

    public class Main extends Activity implements OnClickListener {

       Button ok,back,exit;
      TextView result;



     @Override
        public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   // Login button clicked
   ok = (Button)findViewById(R.id.btn_login);
   ok.setOnClickListener(this);

   result = (TextView)findViewById(R.id.lbl_result);

          }

         public void postLoginData() {
       // Create a new HttpClient and Post Header
       HttpClient httpclient = new DefaultHttpClient();

   /* login.php returns true if username and password is equal to saranga */
   HttpPost httppost = new HttpPost("http://yoursite.com/wp-login.php");

   try {
       // Add user name and password
    EditText uname = (EditText)findViewById(R.id.txt_username);
    String username = uname.getText().toString();

    EditText pword = (EditText)findViewById(R.id.txt_password);
    String password = pword.getText().toString();

       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
       nameValuePairs.add(new BasicNameValuePair("username", username));
       nameValuePairs.add(new BasicNameValuePair("password", password));
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

       // Execute HTTP Post Request
       Log.w("", "Execute HTTP Post Request");
       HttpResponse response = httpclient.execute(httppost);

       String str = inputStreamToString(response.getEntity().getContent()).toString();
       Log.w("", str);

       if(str.toString().equalsIgnoreCase("true"))
       {
        Log.w("", "TRUE");
        result.setText("Login successful");  
       }else
       {
        Log.w("", "FALSE");
        result.setText(str);            
       }

   } catch (ClientProtocolException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
    }

    private StringBuilder inputStreamToString(InputStream is) {
          String line = "";
           StringBuilder total = new StringBuilder();
           // Wrap a BufferedReader around the InputStream
             BufferedReader rd = new BufferedReader(new InputStreamReader(is));
                    // Read response until the end
                  try {
               while ((line = rd.readLine()) != null) {
               total.append(line);
                }
              } catch (IOException e) {
              e.printStackTrace();
                       }
                // Return full string
             return total;
              }

              public void onClick(View view) {
                if(view == ok){
                 postLoginData();
                 }
                 }

                }

错误

 Execute HTTP Post Request
   Default buffer size used in BufferedReader constructor. It would be better to be       explicit if an 8k-char buffer is required.
  <html><head>    <title>yoursite.com: The Leading Website Site on the    Net</title>            <script type="text/javascript">;        if(self != top)    top.location.href = 'http://'+location.hostname+'/?redir=frame&  uid=yoursite50a47fe3380989.09080642';        </script>        <script   type="text/javascript" src="http://return.bs.domainnamesales.com  /return_js.php?d=yoursite.com&s=1352957923"></script>    </head>    <frameset cols="1,*,1"    border=0>        <frame name="top"   src="tg.php?uid=yoursite50a47fe3380989.09080642" scrolling=no frameborder=0 noresize   framespacing=0 marginwidth=0 marginheight=0>        <frame   src="search.php?uid=yoursite50a47fe3380989.09080642" scrolling="auto" framespacing=0  marginwidth=0 marginheight=0 noresize>        <frame   src="page.php?yoursite50a47fe3380989.09080642"></frame>    </frameset>      <noframes>        yoursite.com has been connecting our visitors with providers of Computer  Networking, Dedicated Web Servers, Email Domain Hosting and many other related  services for nearly 10 years. Join thousands of satisfied visitors who found Ftp Hosts, Ftp Servers, Host, Internet Servers, and Linux Servers.<br/>    </noframes></html>
FALSE
4

2 回答 2

1

试试这个例子。

http post方法将空值传递给服务器

在这里,您必须将用户名和密码发送到 Web 服务器,您将根据请求从服务器获得响应。所以如果使用是 reg 与否,你必须在服务端检查。

我有JSON用来检索响应。

于 2012-11-15T06:00:04.957 回答
0

如果您真正正确地检查 logcat,您会发现您已经实现了您想要实现的目标。

您尝试了什么:发送 HTTP POST 请求以进行登录。你得到的回应是:HTML 页面。

您的 webapp 不会为该特定 HTTP POST 请求返回 true/false。而您正在检查true

解决方案:
1. 解析 HTML 页面以确定是否成功登录(不推荐)
2. 重新设计您的 Web 应用程序以返回 xml/json 响应。您可以同时拥有网页和可从任何其他应用程序使用的 API。

您应该注意的其他事项:
1. 切勿在 UI 线程上进行网络调用。最终可能会得到ANR
2。永远不要让没有 TAG 的 Log 语句。标签使调试更容易。当您编写大量代码并处理比这更复杂的问题时,您将理解这一点。

希望这可以帮助。

于 2012-11-15T08:03:11.787 回答