使用Java将HTTP Post发送到Google云消息(Android推送通知)
我试图向GCM(java类)发送一条消息,这样它就可以将其作为推送通知发送。我得到了200的回复 当我的手机收到信息时,会显示为空 我的java类代码:使用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
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(“数据.价格”,“测试”));