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。
我的代码中出错了什么?这个回应意味着什么?