0

GCMサンプルアプリケーションを実行しようとしましたが、logcatで致命的な例外が発生しています(アプリケーションが強制的に閉じられます)。サーバーのURLリンクが無効なURLであることを示しています。URLリンクを実行すると、「デバイスが登録されていません」と表示されます。無効なURLの場合、エラーは正しく表示されますが、「デバイスが登録されていません」と表示されます。だから私は混乱しています。なぜ私はこの問題に直面しているのですか。

logCat:

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

「無効なURL:192.168.1.2:8080/home/register」の原因です...まだウェブサーバーにコードをアップロードしていないようです。サーバーコードライブサーバーをアップロードする必要があります。

于 2013-03-04T11:24:53.693 に答える
1

ここでメソッドServerUtilities.register(..)は静的であり、引数としてRegIdを取り、このIDをサーバーに登録することに注意してください。GETまたはPOSTメソッドを使用して文字列をサーバーに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 に答える
1

指定されたサーバーのURLが間違っているため、デバイスはまだ登録されていません。有効なURLを確認して指定してください。

于 2013-03-04T15:13:15.660 に答える