0

私はAndroidプログラミングに非常に慣れていないので、このコードを何日も使い続けています。私が得るエラーは「SingleClientConnManagerの無効な使用:接続はまだ割り当てられています」です。-そして私はこれがなぜ起こるのか理解していますが、それを解決する方法は理解していません。私が作業しているコード:

protected class loader extends AsyncTask<String, Void, String> {

    protected void onPreExecute()
    {
        nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("username_in",username.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("password_in",password.getText().toString().trim()));
        tv.setText("Started onPreExecute");

    }

    @Override
    protected String doInBackground(String... params) {

        try {
            httpclient = new DefaultHttpClient();
            httppost = new HttpPost("http://www.myurl.com/phplogin.php");

            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            response=httpclient.execute(httppost);

            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            final String response = httpclient.execute(httppost, responseHandler);

            //Toast.makeText(MainActivity.this,response, Toast.LENGTH_LONG).show();
            if(response.equalsIgnoreCase("User Found"))
            {
                httppost.getEntity().consumeContent();
                //startActivity(new Intent("com.example.obligatorisk.BROWSER"));
            }
        }
        catch(IOException e){
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(String result)
    {
        tv.setText("Reached onPostExecute");
    }
    // TODO Auto-generated method stub      
}

完全なエラーログ:

10-18 14:30:52.134: W/SingleClientConnManager(3940): Invalid use of SingleClientConnManager: connection still allocated.
10-18 14:30:52.134: W/SingleClientConnManager(3940): Make sure to release the connection before allocating another one.
10-18 14:30:52.414: W/System.err(3940): org.apache.http.client.HttpResponseException: Internal Server Error
10-18 14:30:52.414: W/System.err(3940):     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71)
10-18 14:30:52.424: W/System.err(3940):     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
10-18 14:30:52.424: W/System.err(3940):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
10-18 14:30:52.424: W/System.err(3940):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
10-18 14:30:52.424: W/System.err(3940):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
10-18 14:30:52.424: W/System.err(3940):     at com.example.obligatorisk.MainActivity$loader.doInBackground(MainActivity.java:113)
10-18 14:30:52.424: W/System.err(3940):     at com.example.obligatorisk.MainActivity$loader.doInBackground(MainActivity.java:1)
10-18 14:30:52.424: W/System.err(3940):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-18 14:30:52.434: W/System.err(3940):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-18 14:30:52.434: W/System.err(3940):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-18 14:30:52.434: W/System.err(3940):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-18 14:30:52.443: W/System.err(3940):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-18 14:30:52.443: W/System.err(3940):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-18 14:30:52.443: W/System.err(3940):     at java.lang.Thread.run(Thread.java:856)

プロジェクトの背後にある考え方は、アプリケーションのログイン機能を作成することです。

私はウェブ上で解決策と助けを見つけようと努力し続けていますが、何をしようとしてもこれを理解することはできません。誰かがここで私を助けてくれることを本当に望んでいます。コードやエラーなどの詳細が必要な場合は、教えてください。追加します。

ありがとう、そして以前に私を助けてくれたすべての人に感謝します。

4

1 に答える 1

0

httppost.getEntity().consumeContent();応答が「UserFound」と等しい場合にのみ実行します。関係なく、コンテンツを完全に消費する必要があります。そのメソッド呼び出しを条件の外に移動します。

    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    final String response = httpclient.execute(httppost, responseHandler);

    //Toast.makeText(MainActivity.this,response, Toast.LENGTH_LONG).show();
    if(response.equalsIgnoreCase("User Found"))
    {
        //startActivity(new Intent("com.example.obligatorisk.BROWSER"));
    }
    httppost.getEntity().consumeContent();
于 2012-12-02T16:22:39.307 に答える