Приложение для Android - авторизация Google через HTTP Post - PullRequest
0 голосов
/ 11 марта 2011

Я просто пытаюсь отправить данные аутентификации своей учетной записи Google через HTTP POST. Я построил HTTPpost (URLencoded ArrayList пара имя-значение) и выполнил HTTPClient, чтобы получить HTTPResponse. Однако именно здесь начинается проблема, HTTPResponse, который я получаю, похоже, возвращает исключение каждый раз, когда я пытаюсь вызвать один из связанных с ним методов (getStatusLine или getEntity). Я также попытался проверить «нулевой» ответ, выполнив простую проверку типа «if (null) else», но все равно не повезло.

Это проблема, потому что я использую эмулятор?

----- ----- UPDATE

Я обнаружил, что получаю ответ NULL Pointer, который вызывает исключение. Итак, существует проблема с доступом к API Google. URL-адрес «https://www.google.com/accounts/ClientLogin"», а «Email» и «Passwd» - это два параметра, которые я использую для запроса POST.

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("<URL HERE>");

try {

    List<NameValuePair> parameters = new ArrayList<NameValuePair>(2);
    parameters.add(<name_value_pair>);
    parameters.add(<name_value_pair>); 
    httppost.setEntity(new UrlEncodedFormEntity(parameters));


    HttpResponse response = httpclient.execute(httppost);

    StatusLine returned_status = response.getStatusLine();
    int status_code = returned_status.getStatusCode();


} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
} catch (IOException e) {
    // TODO Auto-generated catch block
}

}

1 Ответ

2 голосов
/ 20 апреля 2011

Вместо использования httpPost используйте HttpRequest, а также вам нужно использовать библиотеку Base64 и Android версии 2.1 и выше

    String data;
    HttpParams httpParameters;


   HttpClient client;
    HttpResponse response;
    String userAuth;

    httpParameters = new BasicHttpParams();
                    String auth = android.util.Base64.encodeToString(
                            (username + ":" + userpwd).getBytes("UTF-8"), 
                            android.util.Base64.NO_WRAP
                        );
                        HttpGet request = new HttpGet(StaticURL.uMain+resourceURI);

                        request.addHeader("Authorization", "Basic "+ auth);

                    HttpConnectionParams.setSoTimeout(httpParameters, timeoutConnection);
                    client = new DefaultHttpClient(httpParameters);

                    response = client.execute(request);
                    userAuth = EntityUtils.toString(response.getEntity());

                    System.out.println("Data. in login.."+userAuth);
...