0

我试图运行 GCM 示例应用程序,但在我的 logcat 中遇到致命异常(我的应用程序被迫关闭)这表明服务器 URL 链接是无效的 URL。如果我运行我的 URL 链接,它会显示“未注册设备”。如果无效的 URL 表示它正确显示错误,但显示“未注册设备”。所以我很困惑。为什么我面临这个问题。

日志猫:

03-04 16:28:11.691: E/AndroidRuntime(770): FATAL EXCEPTION: AsyncTask #1
03-04 16:28:11.691: E/AndroidRuntime(770): java.lang.RuntimeException: An error occured while executing doInBackground()
03-04 16:28:11.691: E/AndroidRuntime(770):  at android.os.AsyncTask$3.done(AsyncTask.java:299)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-04 16:28:11.691: E/AndroidRuntime(770):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.lang.Thread.run(Thread.java:856)
03-04 16:28:11.691: E/AndroidRuntime(770): Caused by: java.lang.IllegalArgumentException: invalid url: 192.168.1.2:8080/home/register
03-04 16:28:11.691: E/AndroidRuntime(770):  at com.google.android.gcm.demo.app.ServerUtilities.post(ServerUtilities.java:138)
03-04 16:28:11.691: E/AndroidRuntime(770):  at com.google.android.gcm.demo.app.ServerUtilities.register(ServerUtilities.java:66)
03-04 16:28:11.691: E/AndroidRuntime(770):  at com.google.android.gcm.demo.app.DemoActivity$2.doInBackground(DemoActivity.java:88)
03-04 16:28:11.691: E/AndroidRuntime(770):  at com.google.android.gcm.demo.app.DemoActivity$2.doInBackground(DemoActivity.java:1)
03-04 16:28:11.691: E/AndroidRuntime(770):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-04 16:28:11.691: E/AndroidRuntime(770):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-04 16:28:11.691: E/AndroidRuntime(770):  ... 5 more

代码: http: //paste.org/62112

4

3 回答 3

1

这是“无效的网址:192.168.1.2:8080/home/register”的原因......看来您还没有将代码上传到网络服务器。您必须上传服务器代码 Live 服务器。

于 2013-03-04T11:24:53.693 回答
1

您的设备尚未注册,因为给定的服务器 url 是错误的。请检查并提供有效的 url。

于 2013-03-04T15:13:15.660 回答
1

请记住,这里的方法ServerUtilities.register(..)是静态的,并将 RegId 作为参数并将此 Id 注册到服务器。您将不得不在此方法中执行代码,就像我们使用 GET 或 POST 方法将任何字符串发布到我们的服务器一样:

执行代码后,您的方法如下所示:

static boolean register(final Context context, final String regId) {

        String URL = CommonUtilities.SERVER_URL+"&device=" + regId;

        Log.v("URL : ", URL);
        JSONObject json = fetchTwitterPublicTimeline(URL);

        try {
            Log.i("Json : ", json.toString());
            String login_msg = json.getString("MESSAGE");
            Log.i("Reply : ", login_msg);
        } catch (Exception e) {

        }
}
于 2013-03-04T11:41:07.763 回答