2016-08-18 3 views
0

私のアンドロイドアプリでリクエストにタイムアウトエラーが発生しています。私は再試行ポリシーを設定しましたが、問題は解決しませんでした。私のエミュレータでテストすると、正常に動作しますが、実際のデバイスを使ってテストするとタイムアウトエラーが発生します。httpリクエストを送信するときにAndroidデバイスがタイムアウトエラーを表示する

public void makeRequest(final String user, final String cred) 
    { 
     String url = "http://10.0.2.2:8888/map/api/login"; 

     StringRequest postRequest = new StringRequest(Request.Method.POST, url, 
       new Response.Listener<String>() 
       { 
        @Override 
        public void onResponse(String response) 
        { 
         try 
         { 
          JSONObject jsonResponse = new JSONObject(response); 
          String status = jsonResponse.getString("status"); 
          String token = jsonResponse.getString("token"); 


          if(status.equalsIgnoreCase("error")) 
          { 
           Snackbar.make(findViewById(R.id.myCoordinatorLayout), jsonResponse.getString("message"), Snackbar.LENGTH_LONG).show(); 
          } 
          else if (status.equalsIgnoreCase("success")) 
          { 
           System.out.println(jsonResponse); 
           Intent loader = new Intent(home.this,webViewActivity.class); 
           loader.putExtra(EXTRA_MESSAGE,token); 
           startActivity(loader); 
          } 

         } 
         catch (JSONException e) 
         { 
          e.printStackTrace(); 
         } 
        } 
       }, 
       new Response.ErrorListener() 
       { 
        @Override 
        public void onErrorResponse(VolleyError error) 
        { 
         error.printStackTrace(); 
        } 
       } 
     ){ 
      @Override 
      protected Map<String, String> getParams() 
      { 
       Map<String, String> params = new HashMap<>(); 
       params.put("portal[username]", user); 
       params.put("portal[password]", cred); 
       params.put("portal[From]","web"); 
       return params; 
      } 
     }; 
     postRequest.setRetryPolicy(new DefaultRetryPolicy(
       7000, 
       DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
       DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
     Volley.newRequestQueue(getApplicationContext()).add(postRequest); 


    } 

私が取得エラーは、別のデバイス上で、異なるネットワーク上で確認することができます

08-18 12:42:46.341 16112-16112/com.mobile.map.map_mobile W/System.err: com.android.volley.TimeoutError 
08-18 12:42:46.341 16112-16112/com.mobile.map.map_mobile W/System.err:  at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:141) 
08-18 12:42:46.341 16112-16112/com.mobile.map.map_mobile W/System.err:  at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 
+0

あなたのAPIをまずPostman Clientで試してください。何らかのエラーがない場合は、私たちにお知らせください。 – Enzokie

+0

APIのURLを確認しました。サーバー側にエラーがあるようです。 – Enzokie

+0

@Enzokie私は郵便配達員でそれを確認しました。それはAPIだったようです。 – lagfvu

答えて

0

を下回っています。それが動作しない場合は、郵便配達員の応答時間が2500ミリ秒(ボレーのデフォルトタイムアウト)を超えている場合、DefaultRetryPolicy.classでボレーのデフォルトのタイムアウトを増やしてください。

0

私はあなたのKey値ペアがBody 。

 JSONObject params = new JSONObject(); 

      try { 
       params.put("portal[username]", user); 
       params.put("portal[password]", cred); 
       params.put("portal[From]","web"); 
      } catch (JSONException e) { 
       // Do something 
      } 

     Response.Listener<JSONObject> jsonObjectListener = new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        // Response here 
       } 
      }; 

     Response.ErrorListener errorListener = new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        // Error here 
       } 
      }; 

     String url = "http://10.0.2.2:8888/map/api/login"; 

     JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, params, 
        jsonObjectListener, errorListener); 

     Volley.newRequestQueue(getApplicationContext()).add(jsonRequest); 
関連する問題