将cURL转换为Retrofit功能(GCM通知推送)

时间:2016-02-22 22:01:03

标签: php android curl google-cloud-messaging retrofit

我试图将我的cURL转换为GCM通知推送到Retrofit功能,但我不确切知道如何。 我的cURL看起来像这样:

curl --header "Authorization: key=KKK" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_ids\":[\"XXX\"]}"

其中KKK = key,而XXX = userRegistrationToken。

我在那里丢失了消息,因为我没有找到该怎么做,但一般来说这个cURL有效。我想用(通知)消息做同样的事情。

我尝试过这样的事情:

//GCM_ENDPOINT = "https://android.googleapis.com";
    @FormUrlEncoded
    @POST("/gcm/send")
    void sendNotification(
            @Header("Authorization") String key,
            @Header("Content-Type") String contentType,
            @Field("message") String message,
            Callback<Object> response);

我不知道到目前为止这是否正确,但它缺少我想发送的通知消息,我甚至不知道如何处理这个 -d registration_ids ,尤其是当我想要在那里放几个ids。提前谢谢。

1 个答案:

答案 0 :(得分:0)

好的,我设法找到了一个解决方案,即使它不是通过直接转换cURL,它确实可以正常工作:

@POST("/gcm/send")
@Headers({"Content-Type: application/json"})
void sendNotification(
        @Header("Authorization") String apiKey,
        @Body TypedInput jsonBodyInput,
        Callback<NotificationResult> response);

NotificationResult 是我的自定义gson类, apiKey 必须与&#34; key =&#34;前缀(例如:String apiKey =&#34; key =&#34; +&#34; XXX&#34 ;;)。另外,重要的是将 jsonBodyInput 设为TypedInput,如下所示:

TypedInput requestBody = new TypedByteArray("application/json", jsonString.getBytes(Charset.forName("UTF-8")));

如何 jsonString 看起来像here