将带有Retrofit的POST发送到Google Cloud Messaging

时间:2015-11-28 21:19:15

标签: java post server google-cloud-messaging retrofit

GCMResponse:

public class GCMResponse {

    public String multicast_id;
    public int success;
    public int failure;
    public int canonical_ids;
    public List<GCMObject2> results;

    public class GCMObject2 {
        public int message_id;
        public int registration_id;
        public String error;
    }
}

GCMRequest:

public class GCMRequest {
    public List<String> registration_ids;
    public Map<String, String> data;

    public GCMRequest(String title, String message, String icon) {
        registration_ids = new LinkedList<>();

        data = new HashMap<>();

        data.put("title", title);
        data.put("message", message);
        data.put("icon", icon);
    }

    public void addRegId(String regId) {
        registration_ids.add(regId);
    }
}

RetrofitService:

public interface RetrofitService {
    @Headers("Content-Type: application/json")
    @POST("/")
    public GCMResponse GCMAuthorization(@Header("Authorization") String apiKey, @Body GCMRequest data);
}

主要

private static final String GCM_SERVER_URL = "https://android.googleapis.com/gcm/send";

private static void sendWithRetrofit(String apiKey, GCMRequest gcmRequest) {
    RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(GCM_SERVER_URL)
            .build();

    final RetrofitService service = restAdapter.create(RetrofitService.class);

    try {
        GCMResponse gcmResponse = service.GCMAuthorization("key=" + apiKey, gcmRequest);
        System.out.println(gcmResponse);
    } catch (Exception e) {
        System.out.println("Error: " + e.getMessage());
    }
}

public static void main(String[] args) {
    GCMRequest gcmRequest = new GCMRequest("Title", "message", "" + R.drawable.icon1);
    gcmRequest.addRegId("APA91bGL1GJ9eYGEIkGgcCXTOnMd_WPbacJH9UhztOWplcGcRXXXXXXXXXXXXXXXXXXXXXXXX");

    GCMPoster.post(API_KEY, gcmRequest);
}

当我使用Retrofit向GCM发送POST时,它总是返回响应“400 InvalidTokenFormat”,互联网上没有Doc。

我的代码中出错了什么?这个回应意味着什么?

0 个答案:

没有答案