0

単純なPHPコードを介してデータベースにアクセスしようとしています。ただし、制約は、それがリモートデータベースであり、実際のデバイスからリモートサーバーによってアクセスされることです。

コードの抜粋は次のとおりです:-

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("username", un.getText().toString()));
            postParameters.add(new BasicNameValuePair("password", pw.getText().toString()));
            String response = null;
            try {
                response = CustomHttpClient.executeHttpPost("http://WebsiteName.com/check.php", postParameters);
                String res=response.toString();

                res= res.replaceAll("\\s+","");                              

               if(res.equals("1"))
                    error.setText("Correct Username or Password");
                else
                    error.setText("Sorry!! Incorrect Username or Password"); 
            } catch (Exception e) {
                un.setText(e.toString());
            }

PHPはここにあります。PHPコードはローカルで動作するため、おそらく問題はありません。

私が明確にしたい最も重要なことの1つは、サーバーのどこにPHPコードを保持するかです。ルートディレクトリのすぐ下にあります。ブラウザから実行すると(たとえば、website.com / check.phpと入力して)、必要な応答が返されます。残念ながら、これに関するチュートリアルを行った多くの人々は、リモートのものよりもローカルサーバーとローカルデータベースについて言及しています。実際のデバイスでそれを行うために私がすべきことは他にありますか?

PS:このアプリは、ローカルWebサーバーを使用してエミュレーターとローカルデータベースに接続すると正常に動作します。

===更新===

電話がWebサーバーに接続していないことは間違いありません。Webサーバーが常に肯定的な応答を返すようにすることで確認しましたが、これも失敗しました。どこを見るべきかについてのヒントはありますか?オンラインサーバー以外は考えられません...動作しています(ブラウザからチェックした場合)。それをクロスチェックする方法はありますか?ありがとう。

4

1 に答える 1

3

これが直面している問題の原因である場合とそうでない場合がありますが、どちらの方法でも修正する必要があります。

現在、POSTリクエストを同期的に行っています。つまり、POSTリクエストが実行され、デバイスが応答を待機している限り、電話とUIはロックされます。これはユーザーエクスペリエンスを低下させるだけでなく、UIスレッドを一定時間以上ロックすると、Androidはアプリケーションがクラッシュしたと見なします。

ローカルウェブサーバーへのPOSTリクエストは、リモートウェブサーバーとは対照的に非常に高速であるため、おそらくそれがローカルでリクエストを行うときに機能する理由です。

非同期でHTTPリクエストを行うには、AndroidAsyncTaskを調べます

于 2012-05-27T21:36:26.887 に答える