response.body имеет значение null даже после передачи данных - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь отправить уведомление из одного приложения в другое, используя Firebase Cloud Messaging. Я провел пару дней, пытаясь понять, в чем проблема. Я передал тело уведомления указанному c идентификатору токена. Когда я отлаживаю свое приложение, оно говорит «mService недоступен», а когда я запускаю приложение, оно выдает исключение NullPointerException. Содержание, которое я пытаюсь отправить, соответствует моему анализу.

Я проверил интерфейс IFCMService, FCMClient и класса Main, все они в порядке, но я все еще не понимаю, почему я получаю нулевой ответ. Я также проверил свой ключ сервера, и это хорошо. Я видел несколько похожих вопросов, но ни один не смог указать, почему эта проблема может возникнуть. Любезно, я был бы очень признателен за вашу помощь. Ниже приведен мой код IFCMService

    public interface IFCMService {
@Headers({"Authorization:key=" + "<YOUR SERVER KEY>",
        "Content-Type:application/json"})
@POST("fcm/send")
Call<FCMResponse> sendMessage(@Body Sender body);
   }

FCMClient class

    public class FCMClient {
private static Retrofit retrofit = null;

public static Retrofit getClient(String baseURL)
{
    if (retrofit == null){

        retrofit = new Retrofit.Builder()
                .baseUrl(baseURL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

    }
    return retrofit;


}
    }

Это объявление и конкретный c код, где я получаю ошибку. В разделе «mService.sendMessage (content)» создается исключение NullPointerException.

        protected void sendRequestDriver(String driverId){
  Toast.makeText(MainActivity.this,"send driver",Toast.LENGTH_SHORT).show();

    DatabaseReference tokens = FirebaseDatabase.getInstance().getReference(Common.token_tbl);


    tokens.orderByKey().equalTo(driverId).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot postsnapshot:dataSnapshot.getChildren())
            {
                Token token = postsnapshot.getValue(Token.class);

                String json_lat_lng = new Gson().toJson(new LatLng(mLastLocation.getLatitude(),mLastLocation.getLongitude()));


                Notification notification = new Notification("X", json_lat_lng); 


                Sender content = new Sender(notification,token.getToken());



                mService.sendMessage(content)
                        .enqueue(new Callback<FCMResponse>() {
                            @Override
                            public void onResponse(Call<FCMResponse> call, Response<FCMResponse> response) {


                                if (response.body().success == 1)
                                {
                                    Toast.makeText(MainActivity.this,"Request sent",Toast.LENGTH_SHORT).show();

                                }
                                else
                                {
                                    Toast.makeText(MainActivity.this,"Failed",Toast.LENGTH_SHORT).show();


                                }
                            }

                            @Override
                            public void onFailure(Call<FCMResponse> call, Throwable t) {
                                Log.e("ERROR",t.getMessage());

                            }
                        });

            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...