2016-04-20 8 views
0

こんにちは、私は1つの特定の問題があります。私はすべてのネットワークコールにretrofitライブラリを使用しています。私は別のユーザーにポイントを送信する方法が1つあります。エラーが発生した場合、サーバーはコード400と文字列を返すので、ユーザーに表示する必要があります。これは私がこれを作成したものです(NetworkSDKはparamsでボディを送信していて、エラーが発生した場合はエラーステータス文字列を受け取ることを期待しています)ので、論理的にはonResponseメソッドでエラーを処理しています(Networkdkがエラー文字列でオブジェクトを受け取った場合)。 onFailureが発生した場合はエラーは発生しません。しかし、今私はより大きな問題を抱えています。接続がまったくない場合、ユーザーがそのフラグメント内のインターネットをオフにすると、再びonFailureに行き、ポイントが送信されるというメッセージを表示します。ステータスコードがokeyよりも200であればステータスコードでそれを行いますが、何らかの理由でresponse.code()コマンドでステータスコードを取得できません。改造が解決できない理由接続していない - Androidでインターネット接続を確認していますか?

@Override 
    public void onClick(View v) { 
     try { 
      final String cardNo; 
      String amountstring = bodovi.getText().toString(); 
      final Integer amount = Integer.valueOf(amountstring); 
      cardNo = brojkartice.getText().toString(); 
      Log.d("Broj bodova:", amount.toString()); 
      Log.d("Broj kartice:", cardNo); 
      final SendPoints Posiljka = new SendPoints(); 
      Posiljka.setAmount(amount); 
      Posiljka.setCardNumber(cardNo); 
       NetworkSDK.getInstance().SendPoints(Posiljka, new Callback<SendPointsResponse>() { 
        @Override 
        public void onResponse(Call<SendPointsResponse> call, Response<SendPointsResponse> response) { 

         Log.d("Response code:", "" + response.code()); 
         Log.d("Kartica", Posiljka.getCardNumber()); 
         Log.d("Broj bodova", Posiljka.getAmount().toString()); 


         try { 
          SendPointsResponse error = (new Gson()).fromJson(response.errorBody().string(), SendPointsResponse.class); 

          if (error.getCode().equals("-1")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodoava. Neispravni ulazni podaci.", Toast.LENGTH_SHORT).show(); 
          if (error.getCode().equals("-2")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodova. Korisnički podaci nisu popunjeni.", Toast.LENGTH_SHORT).show(); 
          if (error.getCode().equals("-3")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodova. Korisnik ima rezervisanu nagradu.", Toast.LENGTH_SHORT).show(); 
          if (error.getCode().equals("-4")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodova. U toku jednog mjeseca bodove je moguće poslati maksimalno dva puta.", Toast.LENGTH_SHORT).show(); 
          if (error.getCode().equals("-5")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodova. Bodove nije moguće poslati samom sebi.", Toast.LENGTH_SHORT).show(); 
          if (error.getCode().equals("-6")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodova. Korisnik ne može primiti bodove.", Toast.LENGTH_SHORT).show(); 
          if (error.getCode().equals("-100")) 
           Toast.makeText(getActivity(), "Neuspješno slanje bodova. Greška nepoznata.", Toast.LENGTH_SHORT).show(); 


         } catch (IOException e) { 
          e.printStackTrace(); 
         } 


        } 

        @Override 
        public void onFailure(Call<SendPointsResponse> call, Throwable t) { 

         Toast.makeText(getActivity(), "Uspješno slanje bodova.", Toast.LENGTH_SHORT).show(); 
        } 
       }); 



     }catch (Exception e) { 
      Toast.makeText(getActivity(), "Podaci nisu ispravni, provjerite podatke !", Toast.LENGTH_SHORT).show(); 

     } } 

}); 


} 

私はbasicly、ユーザーがインターネットをオフになっているかどうかを検出するために、適切なメッセージを表示するようにONFAILURE方法でいくつかのアイデアを必要とする:ここではコードです。

答えて

0

接続サービスを使用してConnectivityManagerを使用してインターネット接続状況が利用可能な場合は、linkを確認できます。

アプリケーションがネットワークの状態を取得するための権限が必要になることに注意してください:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

それは私がネットワークチェッカー機能をしましたが、私は許可 –

+0

グレートを含めるのを忘れて、今良いことです!私は忘れるために使うものなので、明白に指摘しました;) – Jorge

関連する問題