0

Androidデバイスにプッシュ通知を送信しようとしていますが、次の状況でエラーが発生します。

String msg = "push message";
String to1 = "123456";
String from1 = "098776655";

これは正常に機能します。

Message message = new Message.Builder()
    .collapseKey("1")
    .addData("message", msg)
    .addData("to1", to1)
    .addData("to2", to1)
    .build();

ただし、以下を使用するとエラーが発生します。

Message message = new Message.Builder()
    .collapseKey("1")
    .addData("message", msg)
    .addData("to", to1)
    .addData("from", from1)
    .build();

代わりに他の変数も使用しましfrom1たが、それでもエラーが発生します。

java.io.IOException: Server returned HTTP response code: 400 for URL: https://android.googleapis.com/gcm/send

スタックトレース:

java.io.IOException: Server returned HTTP response code: 400 for URL: https://android.googleapis.com/gcm/send
  [run]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  [run]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
  [run]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  [run]     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
  [run]     at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1298)
  [run]     at java.security.AccessController.doPrivileged(Native Method)
  [run]     at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1292)
  [run]     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:948)
  [run]     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
  [run]     at com.google.android.gcm.server.Sender.sendNoRetry(Sender.java:363)
  [run]     at com.google.android.gcm.server.Sender.send(Sender.java:261)
  [run]     at example.HelloServlet.sendToSingleDevice(HelloServlet.java:173)
  [run]     at example.HelloServlet.doGet(HelloServlet.java:36)
  [run]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
  [run]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  [run]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  [run]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  [run]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  [run]     at java.lang.reflect.Method.invoke(Method.java:597)
  [run]     at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:270)
  [run]     at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
  [run]     at java.security.AccessController.doPrivileged(Native Method)
  [run]     at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
  [run]     at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:302)
  [run]     at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:163)
  [run]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
  [run]     at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
  [run]     at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
  [run]     at java.security.AccessController.doPrivileged(Native Method)
  [run]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
  [run]     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  [run]     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  [run]     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  [run]     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  [run]     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  [run]     at net.stax.appserver.webapp.RequestMonitorValve.invoke(RequestMonitorValve.java:35)
  [run]     at net.stax.appserver.webapp.RequestSetupValve.invoke(RequestSetupValve.java:31)
  [run]     at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:647)
  [run]     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  [run]     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
  [run]     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
  [run]     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  [run]     at java.lang.Thread.run(Thread.java:619)
  [run] Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://android.googleapis.com/gcm/send
  [run]     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1245)
  [run]     at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
  [run]     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318)
  [run]     at com.google.android.gcm.server.Sender.sendNoRetry(Sender.java:362)
  [run]     ... 33 more
  [run] Exception Message : Server returned HTTP response code: 400 for URL: https://android.googleapis.com/gcm/send
4

3 に答える 3

0

これは、URLにアクセスする権限がないか、サーバーから提供された新しい証明書をインストールする必要がある可能性があります。サーバー側の連絡先に相談する必要があります。

于 2012-12-20T05:13:51.173 に答える
0

ありがとう、私はそれを修正したすべての体...

問題は私が変更しただけではありませんでした

.addData("from", from1)

.addData("from1", from1)

そしてそれは動作します...

fromGCMサーバー側のキーワードである可能性があります...

于 2012-12-20T06:35:53.883 に答える
0

サーバーから取得した応答 (応答本文) を見ると、それはfrom確かに予約語であることがわかります (Intent私が覚えている限りでは、Android の s で使用されているため)。

于 2015-03-19T09:53:06.617 に答える