Симулятор сервера Android c2dm на эмуляторе

Я следую примеру android c2dm по следующей ссылке: http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

Я успешно реализовал клиентскую часть и получил свой регистрационный идентификатор. но у меня есть некоторые проблемы на стороне сервера, используя тот же пример, на самом деле проблема заключается в методе getAuthentification, и я получаю следующее исключение в HttpResponse response = client.execute(post).

java.net.UnknownHostException: www.google.com

Ниже приведен мой код:

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(
            "https://www.google.com/accounts/ClientLogin");

    try {

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("Email","[email protected]"));
        nameValuePairs.add(new BasicNameValuePair("Passwd","*********"));
        nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE"));
        nameValuePairs.add(new BasicNameValuePair("source",
                "Google-cURL-Example"));
        nameValuePairs.add(new BasicNameValuePair("service", "ac2dm"));

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(post);
        BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));

        String line = "";
        while ((line = rd.readLine()) != null) {
            Log.e("HttpResponse", line);
            if (line.startsWith("Auth=")) {
                Editor edit = prefManager.edit();
                edit.putString(AUTH, line.substring(5));
                edit.commit();
                String s = prefManager.getString(AUTH, "n/a");
                Toast.makeText(this, s, Toast.LENGTH_LONG).show();
            }

        }
    } catch (IOException e) {
        e.printStackTrace();
    }

Пожалуйста помогите? Ваша помощь была бы очень ценна. Спасибо,


person yousuf hasan    schedule 25.08.2011    source источник


Ответы (1)


У меня была такая же проблема на прошлой неделе. Когда серверы C2DM возвращают 302 Moved (www.google.com), они ДЕЙСТВИТЕЛЬНО означают, что аутентификация не удалась. Проблема почти наверняка заключается в вашем коде аутентификации, поэтому перепроверьте код, который вы используете, чтобы получить код аутентификации из API ClientLogin. Обратите внимание, что ответ HTTP содержит кучу информации, а не только код авторизации, поэтому вам нужно правильно его проанализировать (это была моя ошибка).

public static String getClientLoginAuthToken(String email, String password) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin");
try {

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("Email", email));
nameValuePairs.add(new BasicNameValuePair("Passwd", password));
nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE"));
nameValuePairs.add(new BasicNameValuePair("source","Google-cURL-Example"));
nameValuePairs.add(new BasicNameValuePair("service", "ac2dm"));

post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

String line = "";
while ((line = rd.readLine()) != null) {
    if (line.startsWith("Auth=")) {
        return line.substring(5);
    }
}
} catch (IOException e) {
    e.printStackTrace();
}
    Log.e(TAG, "Failed to get C2DM auth code");
    return "";
}
person Ollie C    schedule 25.08.2011
comment
Хм, возможно, я неправильно понял ваш вопрос. Вы говорите, что получаете ошибку неизвестного хоста, которая обычно предполагает, что ваше сетевое соединение не удалось и поиск DNS не работает, но тот факт, что вы упоминаете www.google.com, заставляет меня думать, что вы на самом деле получаете 302 перенаправить на это имя хоста. Попробуйте мой код и посмотрите, как вы идете. - person Ollie C; 26.08.2011