0

私はAndroidアプリケーションの初心者です。ウェブサイトから登録済みのユーザーのみがログインできるログインページを作成しました。ユーザーがユーザー名とパスワードを入力したら、登録ユーザーを認証します。ユーザー名とパスワードを認証するにはどうすればよいですか。私は次のコードを使用しています。これを見て助けてください。ログインボタンをクリックすると、エラーが表示されます。

Main.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

この例を試してください。

null 値をサーバーに渡す http post メソッド

ここでは、ユーザー名とパスワードを Web サーバーに送信する必要があり、要求に従ってサーバーから応答が返されます。したがって、使用が正規であるかどうかは、サービス側で確認する必要があります。

JSONresponse を取得するために使用しています。

于 2012-11-15T06:00:04.957 に答える
0

実際にlogcatをちゃんと調べてみると、やりたかったことは達成できていることがわかります。

試したこと: ログイン用の HTTP POST リクエストを送信する。返信で得たもの: HTML ページ。

Web アプリケーションは、その特定の HTTP POST 要求に対して true/false を返しません。trueをチェックしているのに対して。

解決策:
1. HTML ページを解析して、ログインが成功したかどうかを判断します (推奨されません)
。 2. Web アプリを再設計して、xml/json 応答も返すようにします。他のアプリから使用できる Web ページと API の両方を使用できること。

その他の注意事項:
1. UI スレッドでネットワーク呼び出しを行わないでください。ANR 2を取得する可能性が
あります。タグなしでログ ステートメントを残さないでください。タグはデバッグを容易にします。これは、大量のコードを書き、これよりもはるかに複雑な問題に対処するときに理解できます。

お役に立てれば。

于 2012-11-15T08:03:11.787 に答える