2017-09-08 4 views
0

Je reçois une première réponse réussie du serveur avec le bon code de statut et le résultat de données de json. Puis il y a 4 demandes successives sont déclenchées et elles gèlent toutes une mauvaise réponse (code d'état 400) avec un message Mauvaise demande. Ce comportement étrange se produit lorsque j'appuie sur une mise à jour, en essayant d'obtenir une liste de données du serveur. Voici mon code: La demande:Série étrange de réponses du serveur après avoir obtenu une première réponse réussie

public static void loadMyOrders(Context context, final OrdersCallBack listener) { 
     KService kTestService = ApiUtils.getOrdersApiService(context); 
    // TODO to be changed to getMyOrders <Done> 
    KService.getAllTheOrders().enqueue(new Callback<List<OrderServer>>() { 
     @Override 
     public void onResponse(Call<List<OrderServer>> call, 
           Response<List<OrderServer>> response) { 
      if (response.code() == 400) { 
       try { 
        Log.d("Error code 400",response.errorBody().string()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
        Log.d("IO exception"," " + e.getMessage()); 

       } 
      } 
      if (response.isSuccessful()) { 
       Log.d("listenerServerManager", response.code() + " "); 
       Log.d("slist0::" , " "+ response.body().toString()); 
       List<OrderServer> ordersList = response.body(); 
       for (OrderServer orderFromServer : ordersList) { 
        orderFromServer.compoundPrimaryKey(); 
       } 
       Log.d("slist1::" , " "+ ordersList.toString()); 
       listener.onSuccesful(ordersList); 
      } else { 
       Log.d("listenerServerManager", response.code() + " "); 
      listener.onError(response.code() + " "); 
      } 

     } 

     @Override 
     public void onFailure(Call<List<OrderServer>> call, Throwable t) { 
      Log.d("listenerServerManager", t.getMessage()+ " "); 
      listener.onError(t.getMessage() + " "); 

     } 
    }); 
} 

client rénovation:

public static Retrofit getClient(String baseUrl, Context context) { 
     sharedpreferences = context.getSharedPreferences(GlobalsManager.USERPREFERENCES, context.MODE_PRIVATE); 
       final String token = sharedpreferences.getString(GlobalsManager.TOKENKEY, " "); 
       Gson gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() { 
        @Override public boolean shouldSkipField(FieldAttributes f) { 
         return f.getDeclaringClass().equals(RealmObject.class); 
        } 
        @Override public boolean shouldSkipClass(Class<?> clazz) { 
         return false; 
        } 
       }).create(); 
       HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); 
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
       if (httpClient == null) { 
        httpClient = new OkHttpClient.Builder().addNetworkInterceptor(new StethoInterceptor()); 
       } 
        httpClient.addInterceptor(new Interceptor() { 
         @Override public okhttp3.Response intercept(Chain chain) throws IOException { 
          Request request = chain.request() 
           .newBuilder() 
           .addHeader("Authorization", "Bearer " + token) 
           .addHeader("Cache-Control", "no-cache") 
           .addHeader("Content-Type", "application/json") 
           .build(); 
           return chain.proceed(request); 
         } 
        }); 
       httpClient.addInterceptor(loggingInterceptor); 
        //httpClient.retryOnConnectionFailure(true); 
        return new Retrofit.Builder().baseUrl(baseUrl) 
         .addConverterFactory(GsonConverterFactory.create(gson)) 
         .client(httpClient.build()) 
         .build(); 
       } 

C'est la sortie: la première réponse est réussie alors j'obtenir les 4 succesvies réponses avec 400 comme réponse de code.

 09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: <-- 200 OK http://api.serverapitest.kproj.net/api/TransportOrders/all (533ms) 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Server: nginx/1.10.3 (Ubuntu) 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Date: Fri, 08 Sep 2017 15:39:39 GMT 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Content-Type: application/json; charset=Windows-1252 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Content-Length: 32443 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Connection: keep-alive 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Cache-Control: no-cache 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Pragma: no-cache 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: Expires: -1 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: X-AspNet-Version: 4.0.30319 
    09-08 16:39:38.121 11246-13196/com.kProject.app6 D/OkHttp: X-Powered-By: ASP.NET 
    09-08 16:39:38.341 11246-13196/com.kProject.app6 D/OkHttp: [{THE GOOD LIST : THE EXPETED *******DATA *****************]} 
09-08 16:39:38.351 11246-13196/com.kProject.app6 D/OkHttp: <-- END HTTP (32443-byte body) 
    <<<<<<After the refresh layout is pressed>>>>>> 
    09-08 16:40:45.151 11246-11246/com.kProject.app6 D/token-retrofitclient: FKJHGFHFGDKJHFDGFEZUOFbNR2Rt-AJu6mT_1Ci7QQAWYGiKH84M6lyAS*****DnpWWFdbo4nOGWfxTKVbA-RO2TzZjbZ5Sqn7_Da-UBm8mcc9x1JKQ6q8KWshd6 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: --> GET http://api.serverapitest.kproj.net/api/TransportOrders/all http/1.1 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: Authorization: Bearer Liv27WIlooXjkjdQ7bNR2Rt-AJu6mT_1Ci7QQAWYGiKH84M6lyASB0RXMiq2WRAB8zx85N7IFSu1CyphJcXGMjArS876Tj_EjYoDkec4Uu6UubiOKid2wG6ta80t0y6ejlp0FECHmqm6llav7uj_W-Au11JLXCmlICOMXT8j8dzCnVBJtr7Uc5oUA6bLMAONOqyU_nKEwz2ZUtRAIIiImY_qzNvc49NSqm7RTqSvBzJha8ElIz515PRWhFfbOaGx-U7jn1-JE7vTSJXfPGCOCGU53ecvO13AFlX2ckG3bUDMUzkqcn534PprTYMgYggGGQf48qdu1SJMgkuyoHJ_81YfDmG8Kr_smrhc7tyoR3wdUQCX_zsVBMJ-zlAPDkNfk15DG4c0qWzmuW9pZZMR5AaAveKU6KUCyUrikFlDGGvwsMLL9P9iYRlZqHFw_3lDu7DnpWWFdbo4nOGWfxTKVbA-RO2TzZjbZ5Sqn7_Da-UBm8mcc9x1JKQ6q8KWshd6 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: Cache-Control: no-cache 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: --> END GET 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: --> GET http://api.serverapitest.kproj.net/api/TransportOrders/all http/1.1 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: Authorization: Bearer Liv27WIlooXjkjdQ7bNR2Rt-AJu6mT_1Ci7QQAWYGiKH84M6lyASB0RXMiq2WRAB8zx85N7IFSu1CyphJcXGMjArS876Tj_EjYoDkec4Uu6UubiOKid2wG6ta80t0y6ejlp0FECHmqm6llav7uj_W-Au11JLXCmlICOMXT8j8dzCnVBJtr7Uc5oUA6bLMAONOqyU_nKEwz2ZUtRAIIiImY_qzNvc49NSqm7RTqSvBzJha8ElIz515PRWhFfbOaGx-U7jn1-JE7vTSJXfPGCOCGU53ecvO13AFlX2ckG3bUDMUzkqcn534PprTYMgYggGGQf48qdu1SJMgkuyoHJ_81YfDmG8Kr_smrhc7tyoR3wdUQCX_zsVBMJ-zlAPDkNfk15DG4c0qWzmuW9pZZMR5AaAveKU6KUCyUrikFlDGGvwsMLL9P9iYRlZqHFw_3lDu7DnpWWFdbo4nOGWfxTKVbA-RO2TzZjbZ5Sqn7_Da-UBm8mcc9x1JKQ6q8KWshd6 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: Cache-Control: no-cache 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: Authorization: Bearer Liv27WIlooXjkjdQ7bNR2Rt-AJu6mT_1Ci7QQAWYGiKH84M6lyASB0RXMiq2WRAB8zx85N7IFSu1CyphJcXGMjArS876Tj_EjYoDkec4Uu6UubiOKid2wG6ta80t0y6ejlp0FECHmqm6llav7uj_W-Au11JLXCmlICOMXT8j8dzCnVBJtr7Uc5oUA6bLMAONOqyU_nKEwz2ZUtRAIIiImY_qzNvc49NSqm7RTqSvBzJha8ElIz515PRWhFfbOaGx-U7jn1-JE7vTSJXfPGCOCGU53ecvO13AFlX2ckG3bUDMUzkqcn534PprTYMgYggGGQf48qdu1SJMgkuyoHJ_81YfDmG8Kr_smrhc7tyoR3wdUQCX_zsVBMJ-zlAPDkNfk15DG4c0qWzmuW9pZZMR5AaAveKU6KUCyUrikFlDGGvwsMLL9P9iYRlZqHFw_3lDu7DnpWWFdbo4nOGWfxTKVbA-RO2TzZjbZ5Sqn7_Da-UBm8mcc9x1JKQ6q8KWshd6 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: Cache-Control: no-cache 
    09-08 16:40:45.161 11246-14427/com.kProject.app6 D/OkHttp: --> END GET 
    09-08 16:40:45.181 11246-11246/com.kProject.app6 D/ViewRootImpl: #1 mView = android.widget.LinearLayout{76d391e V.E...... ......I. 0,0-0,0} 
    09-08 16:40:45.201 11246-11373/com.kProject.app6 D/mali_winsys: new_window_surface returns 0x3000, [399x132]-format:1 
    09-08 16:40:45.261 11246-11373/com.kProject.app6 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <-- 400 Bad Request http://api.serverapitest.kproj.net/api/TransportOrders/all (222ms) 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Server: nginx/1.10.3 (Ubuntu) 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Date: Fri, 08 Sep 2017 15:40:46 GMT 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Content-Type: text/html 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Content-Length: 182 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Connection: close 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <html> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <head><title>400 Bad Request</title></head> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <body bgcolor="white"> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <center><h1>400 Bad Request</h1></center> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <hr><center>nginx/1.10.3 (Ubuntu)</center> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: </body> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: </html> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <-- END HTTP (182-byte body) 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <-- 400 Bad Request http://api.serverapitest.kproj.net/api/TransportOrders/all (224ms) 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Server: nginx/1.10.3 (Ubuntu) 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Date: Fri, 08 Sep 2017 15:40:46 GMT 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Content-Type: text/html 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Content-Length: 182 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: Connection: close 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <html> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <head><title>400 Bad Request</title></head> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <body bgcolor="white"> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <center><h1>400 Bad Request</h1></center> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <hr><center>nginx/1.10.3 (Ubuntu)</center> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: </body> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: </html> 
    09-08 16:40:45.391 11246-14427/com.kProject.app6 D/OkHttp: <-- END HTTP (182-byte body) 
    09-08 16:40:45.401 11246-11246/com.kProject.app6 D/Error code 400: <html>                  <head><title>400 Bad Request</title></head>                  <body bgcolor="white">                  <center><h1>400 Bad Request</h1></center>                  <hr><center>nginx/1.10.3 (Ubuntu)</center>                  </body>                  </html> 
+1

u besoin de voir pourquoi cette mauvaise demande arrive .. cela semble en ce qui concerne de quelque chose en arrière-plan à moins que votre données u faire la demande avec est pas bon .. –

+0

S'il vous plaît offrir à votre demande réelle. –

+0

Cela se produit rapidement, votre serveur exerce-t-il une limitation de débit? –

Répondre

0

Dans mon cas, le serveur était incapable de gérer ces demandes. Voyez si votre client HTTP est statique s'il enlève alors le statique de lui sinon il fera vos demandes existantes aussi avec de nouvelles demandes qui, à leur tour, rendront le serveur incapable de traiter toutes ces demandes en même temps. Voici ma configuration au cas où vous en auriez besoin.

public WebServiceInterface getNetworkService(@Nullable final String token, @NonNull final String url) throws IOException { 
     this.token = token; 
     this.url = url; 
     return getRetrofit(url).create(WebServiceInterface.class); 
    } 

    private Retrofit getRetrofit(String url) { 
     OkHttpClient.Builder client = 
       new OkHttpClient.Builder(). 
         addInterceptor(interceptor). 
         connectTimeout(90, TimeUnit.SECONDS). 
         writeTimeout(90, TimeUnit.SECONDS). 
         readTimeout(90, TimeUnit.SECONDS); 

     if (!Constant.RELEASE) { 
      client.addInterceptor(getLogger()); 
     } 

     retrofit.baseUrl(url) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
       .client(client.build()); 
     return retrofit.build(); 
    } 
+0

merci mais ça ne marche pas –