2013-07-24 90 views
0

我是Java編程新手。我已經開發了一個android應用程序發送一個請求到GCM服務器,並作爲響應,它得到一個註冊ID,我發送到我的java服務器和服務器上,我將它存儲在數據庫中。它的工作很好:)用java發送GCM信息

對於第二部分我已經寫在http服務器的java代碼。使用此代碼,我可以從數據庫訪問註冊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(); 
    } 

} 
+0

有一個gcm客戶端庫作爲google/android sdk的一部分,它使發送gcm消息非常簡單。我們在我們的後端服務器中使用它來向Android設備發送推送通知。你應該考慮使用它,而不是低級http代碼 – cmbaxter

+0

你得到的錯誤是什麼? – Bishan

+0

@JUNAID你解決了這個問題嗎?我也有類似的問題。 – user2800040

回答

0

我不知道你得到了什麼錯誤,但此行:

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

應該是:

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

您在GCM消息包括每種有效載荷的參數應該有一個表格的名稱data.<key>

+0

嗨伊蘭,謝謝你的回覆。我得到以下警告和程序終止....... log4j:警告沒有appender可以找到記錄器(org.apache.http.impl.conn.BasicClientConnectionManager)。 log4j:WARN請正確初始化log4j系統。 log4j:WARN請參閱http://logging.apache.org/log4j/1.2/faq.html#noconfig瞭解更多信息。 – Junaid

+0

@JUNAIDTARAR這是log4j配置的問題。它與GCM無關。您是否嘗試遵循該鏈接修復該警告?此外,我沒有看到您在問題中提供的代碼中的任何log4j參考。 – Eran

+0

謝謝。我不知道log4j。你可以請參閱我的任何鏈接? – Junaid