簡體   English   中英

在Java中發送GCM消息

[英]sending GCM message in java

我是Java編程的新手。 我已經開發了一個android應用程序,它將請求發送到GCM服務器,並作為響應將其發送到我的java服務器,並在服務器上將注冊ID存儲在數據庫中。 它的工作正常:)

第二部分,我在Java服務器中編寫了http代碼。 使用此代碼,我從數據庫訪問注冊ID,並將其發送給GCM服務器,並帶有用於設備的字符串消息。 但是我出錯了。 我的HTTP客戶端代碼在這里。 請幫忙一下嗎?

public static String REQUEST_URL = "https://android.googleapis.com/gcm/send";
private static String GCM_ID = "APA91bFEnZXT7YRTJm2d5NpbKcpJCuDwEIJjZmwYITIIWIOFIZHEtwYc8S3oN_Upe3RnSvUqcwmntIrMqaF8Vn04b_EZtvoDQMAqt21Zw9Sb9GhNXwVS70yDOjUyRohH7u1RmtTHRrkjaBUueIjS2gD1Uw1cQDJbQg";

/**
 * @param args
 */
public static void main(String[] args) {

    List<NameValuePair> formparams = new ArrayList<NameValuePair>();

    formparams.add(new BasicNameValuePair("registration_id", GCM_ID));
    formparams.add(new BasicNameValuePair("data", "this is data mesg"));
    // UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
    // "UTF-8");

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(REQUEST_URL);

    httpPost.setHeader("Authorization",
            "key=AIzaSyBTgKVWevp0GwM5m2QAuF__39eEI0bclVA");
    httpPost.setHeader("Content-Type",
            "application/x-www-form-urlencoded;charset=UTF-8");

    try {
        httpPost.setEntity(new UrlEncodedFormEntity(formparams, "utf-8"));
        httpclient.execute(httpPost);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

我不知道您遇到了什么錯誤,但是這一行:

formparams.add(new BasicNameValuePair("data", "this is data mesg"));

應該 :

formparams.add(new BasicNameValuePair("data.message", "this is data mesg"));

您在GCM消息中包含的每個有效負載參數都應具有表單data.<key>的名稱data.<key>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM