2017-06-16 14 views
-1

問題が発生しました。私のコードは2回私の要求をしています。なぜ私は本当にその理由を知らないのです。私は執行の時を変え、何も変わらない。誰かが私を助けることができますか?それは私のデータベースにのみ1時間のinfromationを挿入するので、私は私のPHPとそれに問題はないとしてみてくださいAndroid StringRequestが2回実行される

private void registerUser(final String username, final String password) { 
// Tag used to cancel the request 
String tag_string_req = "req_register"; 

StringRequest strReq = new StringRequest(Request.Method.GET, 
     AppConfig.URL_REGISTER+"?username="+username+"&password="+password, new Response.Listener<String>() { 

    @Override 
    public void onResponse(String response) { 
     Log.e(TAG, "Register Response: " + response.toString()); 

     try { 
      JSONObject jObj = new JSONObject(response); 
      boolean error = jObj.getBoolean("error"); 
      if (!error) { 
       // User successfully stored in MySQL 
       // Now store the user in sqlite 
       String uid = jObj.getString("userId"); 

       JSONObject user = jObj.getJSONObject("user"); 
       String userName = user.getString("userName"); 

       // Inserting row in users table 
       db.addUser(uid, userName); 



       // Launch login activity 
       Intent intent = new Intent(
         SignupActivity.this, 
         LoginActivity.class); 
       startActivity(intent); 
       finish(); 
      } else { 

       // Error occurred in registration. Get the error 
       // message 
       errormsg= jObj.getString("error_msg"); 
       Toast.makeText(getApplicationContext(), 
         errormsg, Toast.LENGTH_LONG).show(); 
       hideDialog(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      hideDialog(); 
     } 

    } 
}, new Response.ErrorListener() { 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     Log.e(TAG, "Registration Error: " + error.getMessage()); 
     Toast.makeText(getApplicationContext(), 
       error.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
}) { 

    @Override 
    protected Map<String, String> getParams() { 
     // Posting params to register url 
     Map<String, String> params = new HashMap<String, String>(); 
     params.put("username", username);; 
     params.put("password", password); 

     return params; 
    } 

}; 
// Adding request to request queue 
AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 

if(errormsg == null) 
{ 
Toast.makeText(this,"Vous pouvez maintenant vous connecter",Toast.LENGTH_LONG).show(); 
} 

//limiter le temps d'execution 
strReq.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, 
     DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

}

Anbd:ここに は、私は、要求を行うコードです。これはJavaですが、私は本当に理由を見つけることはありません。 私は多くの解決策を試しています。私に解決策を求めようとしています

+0

どのリスナーはonClick()またはonTouch()を使用していますか? –

+0

私はOnClick()を使用していますが、onTouch()を使用する方が良いですか? –

+0

このチュートリアルに従うhttps://code.tutsplus.com/tutorials/an-introduction-to-volley--cms-23800 – altu

答えて

0

これを試してみてください。

strReq.setRetryPolicy(new DefaultRetryPolicy(
        (int) TimeUnit.SECONDS.toMillis(20), 
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
+0

何も私のデータベースに2回のデータを書き込む変更はありません –

+0

AppController.getInstance()を呼び出す前にこれを設定してください。addToRequestQueue(strReq、tag_string_req); – Dhiren

+0

あまりにも動作しません。 –

関連する問題