我尝试使用 Postman 并使用相同的 JSON 对象进行测试,它工作得很好,但当我使用改造库时它不起作用。
我尝试将 JSON 对象放入 Pojo 类中,但仍然不起作用。
通知服务类
public interface NotificationService {
@Headers({
"Content-Type:"+ApiConstants.CONTENT_TYPE,
"Authorization:"+ApiConstants.SERVER_KEY
})
@POST(ApiConstants.SEND)
Call<ResponseBody> sendNotification(@Body String body);
}
API 常量类
public class ApiConstants {
public static final String SERVER_KEY = "key=mykey";
public static final String SEND = "send";
public static final String BASE_URL = "https://fcm.googleapis.com/fcm/";
public static final String CONTENT_TYPE = "application/json";
public static final String NOTIFICATION = "{\n" +
" \"to\": \"/topics/MISSING\",\n" +
" \"data\": {\n" +
" \"extra_information\": \"This is some extra information\"\n" +
" },\n" +
" \"notification\": {\n" +
" \"title\": \"She pressed the button\",\n" +
" \"text\": \"She misses you\",\n" +
" \"click_action\": \"MAINACTIVITY\"\n" +
" }\n" +
"}";
}
主要 Activity
private void buttonIsPressed() {
RetrofitClient retrofitClient;
retrofitClient = RetrofitClient.getInstance();
Call<ResponseBody> call = retrofitClient.getNotificationService().sendNotification(ApiConstants.NOTIFICATION);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
ResponseBody result = response.body();
String gs = new Gson().toJson(result);
Log.d("MainActivity", "response = " + gs);
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d(TAG, "//onFailure");
}
});
}
我正在尝试在按下按钮时向某些特定用户发送通知。据我所知,唯一不起作用的是我在使用 Call<ResponseBody> sendNotification(@Body String body)
时为正文提供了错误的输入。
最佳答案
您应该创建一个模型类
public class MyRequestBodyModel {
@SerializedName("id")
private int id;
@SerializedName("name")
private String name;
}
创建 MyRequestBodyModel 的新实例并传递您的值
MyRequestBodyModel model = new MyRequestBodyModel();
model.id = 1;
model.name = "john";
将此模型的实例设置为改造调用方法的参数
Call<ResponseBody> sendNotification(@Body MyRequestBodyModel model);
关于java - 如何使用 RETROFIT 库发布原始 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839243/