使用Java将HTTP Post发送到Google云消息(Android推送通知)

使用Java将HTTP Post发送到Google云消息(Android推送通知),java,android,apache,push-notification,google-cloud-messaging,Java,Android,Apache,Push Notification,Google Cloud Messaging,我试图向GCM(java类)发送一条消息,这样它就可以将其作为推送通知发送。我得到了200的回复 当我的手机收到信息时,会显示为空 我的java类代码: package com.push.notification.server; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; impor

我试图向GCM(java类)发送一条消息,这样它就可以将其作为推送通知发送。我得到了200的回复

当我的手机收到信息时,会显示为空

我的java类代码:

package com.push.notification.server;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;

public class sendNotification {
    public static String REQUEST_URL = "https://android.googleapis.com/gcm/send";
    private static String GCM_ID = "APA91bHae4Fx4H0zqLfb0_IlmxMdAGP16UB0HnrpTAPgnVnKt8XUTOYfern_0N4CizwICKCdgU-xEKS_1JEsyfcaNatBSuroxaxn30ub7jrhlUTHNInw1okJRlKrJkuRRaG1-qYuBJJ2";

/**
 * @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.message", "testing"));
    // UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
    // "UTF-8");

    HttpClient httpclient = HttpClientBuilder.create().build();
    HttpPost httpPost = new HttpPost(REQUEST_URL);
    HttpResponse response;

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

    try {
        httpPost.setEntity(new UrlEncodedFormEntity(formparams, "utf-8"));
        httpclient.execute(httpPost);

        //Get the response
        response = httpclient.execute(httpPost);

        int responseCode = response.getStatusLine().getStatusCode();
         String responseText = Integer.toString(responseCode);      
         System.out.println("HTTP POST : " + responseText);

         /*Checking response */
         if(response!=null){
             InputStream in = response.getEntity().getContent(); //Get the data in the entity
             System.out.println("HTTP POST : " + in.toString());
         }
        //Print result
        System.out.println(response.toString());

    } 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();
    }

}
}
客户端控制器类

// Notifies UI to display a message.
void getPushNotification(Context context) {

Intent intent = new Intent(Config.DISPLAY_MESSAGE_ACTION);
intent.putExtra(Config.EXTRA_MESSAGE, message);

// Send Broadcast to Broadcast receiver with message
context.sendBroadcast(intent);

}
客户意向服务:

@Override
protected void onMessage(Context context, Intent intent) {

Log.i(TAG, "Received message");
message = intent.getExtras().getString("price");

Log.i("GCM MESSAGE", "Message= " + message);
}
客户端广播接收器:

public class GCMReceiver extends GCMBroadcastReceiver { 
@Override
protected String getGCMIntentServiceClassName(Context context) { 
return "com.testing.gcm.GCMIntentService"; 
}

您正在发送一个名为
的参数message

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");
但是您的客户机需要一个名为
price
的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");

这将解释空消息。

您正在发送一个名为
消息的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");
但是您的客户机需要一个名为
price
的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");

这将解释空消息。

您正在发送一个名为
消息的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");
但是您的客户机需要一个名为
price
的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");

这将解释空消息。

您正在发送一个名为
消息的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");
但是您的客户机需要一个名为
price
的参数:

formparams.add(new BasicNameValuePair("data.message", "testing"));
message = intent.getExtras().getString("price");

这可以解释空消息。

问题可能出在您的客户端代码中。你能发布你的广播接收器/意图服务代码吗?谢谢你的回复,我刚刚更新了我的问题。也许问题出在你的客户代码中。你能发布你的广播接收器/意图服务代码吗?谢谢你的回复,我刚刚更新了我的问题。也许问题出在你的客户代码中。你能发布你的广播接收器/意图服务代码吗?谢谢你的回复,我刚刚更新了我的问题。也许问题出在你的客户代码中。你能发布你的广播接收器/意图服务代码吗?谢谢你的回复,我刚刚更新了我的问题。谢谢你的回复,我刚刚意识到:formparams.add(新的BasicNameValuePair(“data.message”,“testing”);需要更改为:formparams.add(新的BasicNameValuePair(“数据.价格”,“测试”));感谢您的回复,我刚刚意识到:formparams.add(newBasicNameValuePair(“data.message”,“testing”));需要更改为:formparams.add(新的BasicNameValuePair(“数据.价格”,“测试”));感谢您的回复,我刚刚意识到:formparams.add(newBasicNameValuePair(“data.message”,“testing”));需要更改为:formparams.add(新的BasicNameValuePair(“数据.价格”,“测试”));感谢您的回复,我刚刚意识到:formparams.add(newBasicNameValuePair(“data.message”,“testing”));需要更改为:formparams.add(新的BasicNameValuePair(“数据.价格”,“测试”));